如何编写一个任务类

cobra_chen 2012-06-15 08:49:02
1.设备只能做一个任务。
2.用户可以一直下任务,这个时候需要把这些任务都存储下来。
3.任务有一个优先级,执行的时候先做优先级高的。
4.优先级相同按时间顺序执行。
5.若时间也相同,删除未执行的任务。
6.可以产生周期任务(每隔一段时间,产生一个任务)。
7.可以删除任务。
8.支持多线程。
-
各位提供点思路吧。
...全文
134 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cobra_chen 2012-06-15
  • 打赏
  • 举报
回复
对,有这方便比较经典的算法么?
本人对2,6,8压力比较大。
或者有什么类似的开源代码么?

[Quote=引用 3 楼 的回复:]

这个类里面貌似要带调度算法和优先级队列什么的了。
[/Quote]
大尾巴猫 2012-06-15
  • 打赏
  • 举报
回复
要有1个优先队列,而且这个队列是可以在队列中间进行只读访问和删除的(为了满足删除任务的需求)
队列设计为类的静态成员,所有类的实例共享这一队列,
需要设置一个静态的CriticalSection,用来同步各线程对队列的操作。
然后把上面这些作为一个基类的protected的成员和函数
派生出下面3个类
用户的类 负责把用户的输入的任务加入队列尾。
周期类 有一个计时器自动间隔一定时间触发的线程提供周期任务
设备类 用一个信号量来触发,只要有任务就做,没任务等待,信号量资源的增加由提供任务的线程负责

初步能想到的就是这些。
真的做起来还是很麻烦的。
酱油党 2012-06-15
  • 打赏
  • 举报
回复
描述太抽象了,所以说知识多了也不好!~
W170532934 2012-06-15
  • 打赏
  • 举报
回复
这个类里面貌似要带调度算法和优先级队列什么的了。
qingcairousi 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

思路是实践出来的,如果没思路就什么都别管,狂码代码就行了,等最后不行的你会修改和重构它,这时候就有思路了。
[/Quote]
不一定会修改和重构,也许会对着自己也看不懂的代码发呆一会,掀桌:老子不干了!
hard9999 2012-06-15
  • 打赏
  • 举报
回复
思路是实践出来的,如果没思路就什么都别管,狂码代码就行了,等最后不行的你会修改和重构它,这时候就有思路了。
dasjdka 2012-06-15
  • 打赏
  • 举报
回复
不要怕难,既然知道功能要求,自己尝试写,写着写着,你就完成了。
UnknowName 2012-06-15
  • 打赏
  • 举报
回复
如果系统有本地数据库还是把任务存在数据库中,需要的时候遍历排序,读取。
多线程的问题并不能给你多少建议。 如果不考虑效率问题的话,一个线程最安全可靠。
这个你依据具体的情况具体分析吧。
UnknowName 2012-06-15
  • 打赏
  • 举报
回复
任务管理 和 任务执行 分成两个模块,中间用抽象接口衔接。
任务管理,主要负责任务的添加、删除、和排序(包括优先级)。
要执行任务的时候通过 一个 common对象将任务传给 任务执行模块。 有任务模块执行。
周期任务是任务的一种特殊情况,根据实际的情况考虑使用继承或者组合。
多线程可以抽离成一个模块,供任务执行模块使用。

具体你是使用什么样的方式来实现,这个根据个人喜好吧。 队列或者链表都行。

这么做的好处是各模块之间协作依赖抽象接口,并且可以分开各自开发。方便项目管理。
cobra_chen 2012-06-15
  • 打赏
  • 举报
回复
和我想的差不多,我觉得没必要把任务设置为静态的。
毕竟如果有第二种任务,就无法完成了。
也没有分用户类,周期类。
我的想法是一个类,然后提供不同的接口。
-
周期任务怎么产生?
下达一个周期任务就去把所有周期都产生。(如果这样,周期太长,就会有大量的任务,存储是个问题)
再或者用另一个线程,然后用类似定时器的原理去产生?那么如果说,周期任务很多的话,那么就可能会消耗比较多的线程,资源是个问题。如果用一个线程,同样多个任务并发产生的时候,时间是个问题。
不知道如何取舍,或者有更好的方法?
因为这个设备会运行长达1年甚至3年以上。所以要考虑一些极端的条件。



[Quote=引用 5 楼 的回复:]

要有1个优先队列,而且这个队列是可以在队列中间进行只读访问和删除的(为了满足删除任务的需求)
队列设计为类的静态成员,所有类的实例共享这一队列,
需要设置一个静态的CriticalSection,用来同步各线程对队列的操作。
然后把上面这些作为一个基类的protected的成员和函数
派生出下面3个类
用户的类 负责把用户的输入的任务加入队列尾。
周期类 有一个计时器自动间隔一定时间……
[/Quote]
Binzo 2012-06-15
  • 打赏
  • 举报
回复
有点像要做出个任务系统(os)似的。

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧