如何唤醒多个线程?会者太简单 ( 积分: 50 )

  • 主题发起人 主题发起人 masm
  • 开始时间 开始时间
M

masm

Unregistered / Unconfirmed
GUEST, unregistred user!
有N个线程,0号线程做一些初始化工作,完成后,唤醒其他N-1个线程。
最好用类似于WaitForSingleObjects之类的机制,以减少CPU占用率。
 
有N个线程,0号线程做一些初始化工作,完成后,唤醒其他N-1个线程。
最好用类似于WaitForSingleObjects之类的机制,以减少CPU占用率。
 
0号线程创建时选择Create(False),就是创建后立即启动
其他线程Create(True),即创建后Suspend
在0号线程初始化之后使用循环将N-1号线程Resume
 
或者使用消息,0号线程初始化成功后发送消息
在消息处理函数中一次启动其他线程
 
还有没有更好的解决方案?
明天结贴发分!
 
呵呵,老哥,你没看过Windows核心编程的书吗?
用事件对象就可以处理
用CreateEvent API函数创建一个命名对象(命名后系统的所有进程都可以“看到”),
除了第一个线程,其它线程在启动后都用WaitForSingleObject函数等待,第一个线程初始化结束后SetEvent一下就OK了
 
呵呵,老弟啊。
WaitForSingleObject函数对事件对象进行-1操作的哦。你SetEvent一下,只有一个线程会从waitfor...中解脱出来,其余的还阻塞在那里。
 
呵呵,CreateEvent函数的附作用你知道吗?
你把它设置成“手工复位”,这样SetEvent后,所有等待的线程都会执行的
 
demo一下啦。
 
用事件唤醒,很简单
 
那就使用waitformutipleobjects来做撒
 
后退
顶部