关于WaitForSingleObject(100分)

  • 主题发起人 dadacncn
  • 开始时间
D

dadacncn

Unregistered / Unconfirmed
GUEST, unregistred user!
在主程序中我建了个mutex
mutex = CreateMutex(NULL, TRUE, NULL)
在子线程中, 我用
waitMutex = WaitForSingleObject(mutex, 0)
可是当子线程一执行到这里就停止不动了. 这是什么原因呢? 次问题困绕我很久了.请帮忙解释一下, 非常非常感谢!
 
由于CreateMutex(NULL, TRUE, NULL)第二个参数是TRUE,主线程已经锁定了mutex,
子线程WaitForSingleObject肯定会一直等待直到主线程ReleaseMutex
 
CMutex对像的互拆是用/m_Mutex.Lock();和n_Mutex.Unlock控制的不能用waitForSingleObject这个函数,waitForSingleObject用来等事件用的,你用错了
 
ilue说的没错,第二个参数是TRUE说明创建它的线程同时也得到了互斥量的权限
keslion你说的是MFC封装类的接口
 
mutex = CreateMutex(NULL, TRUE, NULL)
第二个参数应该设为FALSE就对了!
如果是true,主线程一直不交出互斥信号,那么子线程得不到互斥信号也就会一直处于等待状态!子线程要有ReleaseMutex释放互斥信号!别忘了!
 
顶部