读书人

怎么编写一个任务类

发布时间: 2012-06-22 16:16:32 作者: rapoo

如何编写一个任务类
1.设备只能做一个任务。
2.用户可以一直下任务,这个时候需要把这些任务都存储下来。
3.任务有一个优先级,执行的时候先做优先级高的。
4.优先级相同按时间顺序执行。
5.若时间也相同,删除未执行的任务。
6.可以产生周期任务(每隔一段时间,产生一个任务)。
7.可以删除任务。
8.支持多线程。
-
各位提供点思路吧。

[解决办法]
思路是实践出来的,如果没思路就什么都别管,狂码代码就行了,等最后不行的你会修改和重构它,这时候就有思路了。
[解决办法]

探讨

思路是实践出来的,如果没思路就什么都别管,狂码代码就行了,等最后不行的你会修改和重构它,这时候就有思路了。

[解决办法]
这个类里面貌似要带调度算法和优先级队列什么的了。
[解决办法]
描述太抽象了,所以说知识多了也不好!~
[解决办法]
要有1个优先队列,而且这个队列是可以在队列中间进行只读访问和删除的(为了满足删除任务的需求)
队列设计为类的静态成员,所有类的实例共享这一队列,
需要设置一个静态的CriticalSection,用来同步各线程对队列的操作。
然后把上面这些作为一个基类的protected的成员和函数
派生出下面3个类
用户的类 负责把用户的输入的任务加入队列尾。
周期类 有一个计时器自动间隔一定时间触发的线程提供周期任务
设备类 用一个信号量来触发,只要有任务就做,没任务等待,信号量资源的增加由提供任务的线程负责

初步能想到的就是这些。
真的做起来还是很麻烦的。

[解决办法]
有点像要做出个任务系统(os)似的。
[解决办法]
任务管理 和 任务执行 分成两个模块,中间用抽象接口衔接。
任务管理,主要负责任务的添加、删除、和排序(包括优先级)。
要执行任务的时候通过 一个 common对象将任务传给 任务执行模块。 有任务模块执行。
周期任务是任务的一种特殊情况,根据实际的情况考虑使用继承或者组合。
多线程可以抽离成一个模块,供任务执行模块使用。

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

这么做的好处是各模块之间协作依赖抽象接口,并且可以分开各自开发。方便项目管理。

[解决办法]
如果系统有本地数据库还是把任务存在数据库中,需要的时候遍历排序,读取。
多线程的问题并不能给你多少建议。 如果不考虑效率问题的话,一个线程最安全可靠。
这个你依据具体的情况具体分析吧。
[解决办法]
不要怕难,既然知道功能要求,自己尝试写,写着写着,你就完成了。

读书人网 >C++

热点推荐