如何让线程按指定顺序执行

gxx2019 2009-10-08 08:04:11
有3个线程,A负责接收数据,B负责处理数据,C负责写数据到磁盘。请问用什么样的同步方法,可以让3个线程顺序执行。
即总是A先执行,然后B,然后C。
...全文
268 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
u26zxu 2009-10-20
  • 打赏
  • 举报
回复
同意sevencat看法.队列处理

分析.A B 业务特点. 比如A采集要求的是不连续性,持续性, B处理业务处理时间 C业务处理时间等

进行适当的处理,比如队列长度,是否要用链表,还是加入丢包处理等,

这种分多线程我想适合A接收短时间内要求实时性比较高的情况下用,跟据业务实时性要求建立缓冲

sevencat 2009-10-18
  • 打赏
  • 举报
回复
我做过一个类似的东东,不过我的效率未必高,我是建立了两个队列,A线程完成后丢队列1,B线程不停的到队列1取东东,取到后进行处理,并再丢到队列2,C线程不停的到队列2取东东执行。我自己觉得这样很清晰。也不太容易出问题。
danscort2000 2009-10-13
  • 打赏
  • 举报
回复
最简单也是最高效的方法
采用线程消息环
A-B
B-C
C-A
就可以了
szsmile123 2009-10-13
  • 打赏
  • 举报
回复
A线接收到数据创建B线程,然后B线程在创建C线程,各线程之间的数据传递就很多种了
wangk 2009-10-13
  • 打赏
  • 举报
回复
我建议你使用Fiber(也就是俗称的纤程),然后配合数据队列自己来调度。
不过逻辑一定要理清楚,否则你会发现,还不如用单线程来实现。
greatws 2009-10-13
  • 打赏
  • 举报
回复
一个wait一个,不过这样你就失去多线程的意义了,就在一个线程处理好了。
一条晚起的虫 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lisunlin0 的回复:]
如果必须按这样的设计执行的话,一个线程序搞定,不用需要用多线程。

[/Quote]

//同感
sunlin7 2009-10-09
  • 打赏
  • 举报
回复
如果必须按这样的设计执行的话,一个线程序搞定,不用需要用多线程。
ssmartboy 2009-10-09
  • 打赏
  • 举报
回复
学一下线程同步,<<windows核心编程>>上非常清楚
litomboy 2009-10-09
  • 打赏
  • 举报
回复
学习
必成桂 2009-10-09
  • 打赏
  • 举报
回复
用event事件就可以了。

创建事件event1, 事件event2

线程B等待event1, 线程A执行完成后通知B执行。

线程C等待event2, B执行完成通知C执行。

ccc_cgreen 2009-10-09
  • 打赏
  • 举报
回复
严格要求某些线程按照某种顺序执行是几乎不可能的,毕竟,你没有办法预先知道下一个CPU时间片分配给哪个线程,你要实现你的业务逻辑的话,一般都是通过线程同步,来保证A接受到数据之后,然后B再处理,然后C再处理
ssmartboy 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lisunlin0 的回复:]
如果必须按这样的设计执行的话,一个线程序搞定,不用需要用多线程。

[/Quote]
概念错误,可接受若干次,也可以处理若干次,还可以写若干此磁盘,而且他们的次数是可以不等的.所以说多线程是有用武之地的
wltg2001 2009-10-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 gxx2019 的回复:]
有3个线程,A负责接收数据,B负责处理数据,C负责写数据到磁盘。请问用什么样的同步方法,可以让3个线程顺序执行。
即总是A先执行,然后B,然后C。
[/Quote]
这个不难吧,BC先用WaitForSingleObject等待,A做完了发信号量,让B执行,B完了发信号量让C执行。
Coder_Y_Jao 2009-10-08
  • 打赏
  • 举报
回复
前一个线程函数返回前CREATEEVENT
glacier3d 2009-10-08
  • 打赏
  • 举报
回复
说错了,是生产者/消费者模型
glacier3d 2009-10-08
  • 打赏
  • 举报
回复
应该还是读写者模型,AB之间建立一个读写者模型,BC之间也建立一个,同步用信号量之类

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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