其它的线程必须等该线程处理完之后才能运行,如何做
编号:QA004447
建立日期: 2001年10月10日 最后修改日期:2001年10月10日
所属类别:
江南行:
本人用VC++6.0编写多线程应用程序时碰到了麻烦,线程函数中含有深嵌套的for循环语句,其它的线程必须等该线程处理完之后才能运行,请问如何解决这种现象?谢谢
回答:
你说的这种情况实际上是线程同步。MFC提供了下面几个类来进行线程同步:
1、CEvent。可以在你的线程开始设置CEvent::SetEvent,其他线程使用CSingleLock::Lock来等待你线程处理结束。当你的线程处理完毕,使用CEvent::ResetEvent清除事件,其他程序就可以继续执行了。
2、CMutex 。每一个时刻只有一个对象可以拥有CMutex对象,用法可以参考VC++自己的例子MUTEXES。
3、CSemaphore。是个共享计数器。特别适合限制在同一时间内做某事的线程的个数。
4、CCriticalSection。类似CMutex,但不能在进程之间使用,速度比CMutex快。
相关问题:
QA000798 "用VC++5.0实现多线程的调度和处理 "
此问题由李海回答。
| |
|
|
| |
|
|