支持HW团队,就支付宝领取下面的红包吧!(2018年3月31前,就几毛,也会几块,可以和其他红包叠加使用),你领取消费,HW有奖励。红包使用无条件限制,有条件请注意是不是有病毒。

小伙伴们,给大家发红包喽!人人可领,领完就能用。祝大家领取的红包金额大大大!#吱口令#长按复制此消息,打开支付宝就能领取!er1OEj73Uj

登入 注册 | 验证
| 搜索
HelloWorld论坛 : > 计算机科学、技术、教学> 编程入门> c、c++基础> [原创]并发到达的事件,串行处理(还有遗漏,请指教)
 
 
 
 
 
 
 
 
类别:其他 阅读:4567 评论:0 时间:七月 24, 2012, 10:48 a.m. 关键字:串行 并发

 

有时候,我们需要把并发到达的事件,串行处理。比如写文件,有10个写文件对象,有好多写文件事件,要求是10个文件的读写,对于每个文件是并行的。最简单的办法就是加锁。但是如果一个线程在写A文章,另外一个线程也要写A文件的时候,会阻塞线程。

现在用这个办法,1个主队列(文件对象),里面存放着有事件要处理的文件对象,每个文件对象有一个自己的队列,放自己要处理的时间。

所以要保证 有事件要处理的对象一定有记录存放在主队列里。小弟有如下设计,不怎么完善,欢迎大家指正,有更好的资料,欢迎转载。

事件到达,放入对象队列
1、锁对象队列
2、先看看是否是空队列,不管如果都加入队列
3、解锁队列
4、如果第2步原先是空队列,往主队列插入一个对象引用


对象的处理函数里面:
1、标记正在处理中
2、锁对象队列取事件再解锁
3、处理事件
4、重复2、3直到没有事件。
5、解标记处理中
6、锁自身队列,如发现还有事件,先解锁,再将自己插入总队列

 

安上面的原则,好像还有遗漏,望高手指点

 

有遗漏的意思是指,文件对象还有事件,但是主队列,没有这个文件对象

完成按照说明做,是没有的,是我代码写错了 哈哈

相关博文:
[挂载人]初学MPEG [审核人]初学MPEG 推荐

个人签名--------------------------------------------------------------------------------

Please Login (or Sign Up) to leave a comment