int _tmain(int argc, _TCHAR* argv[])
{
mutex = CreateMutex( NULL, FALSE, NULL ); WaitForSingleObject( mutex, INFINITE );
WaitForSingleObject( mutex, INFINITE ); printf("here"); return 0;
}
这样写程序不会阻塞住,是不是一定要放到两个线程里面才行?

解决方案 »

  1.   

    mutex创建成功了吗?wait时,值是什么?
      

  2.   

    int _tmain(int argc, _TCHAR* argv[])
    不是线程吗,显然是主线程。
    看看CreateMutex的参数吧。你那个是创建就唤醒的。这样这么能停止。
    你需要创建一个自己手动呼唤的。这样肯定就可以了
      

  3.   

    因为你创建的mutex一开始没有拥有者
    所以第一次WaitForSingleObject会使当前线程获得mutex的所有权,并立即返回
    mutex的所有线程再次等待mutex时也不会阻塞,因此第二次WaitForSingleObject也会马上返回
      

  4.   

    mutex = CreateMutex( NULL, FALSE, NULL );第二个参数传入FALSE, mutex 互斥量内核对象的线程ID和递归计数都被设为0,这意味着互斥量不为任何线程占用,处于触发状态。WaitForSingleObject 如果互斥量内核对象已经处于触发状态,线程是不会进入等待状态的。
      

  5.   

    因为你是在同一个线程中调用WaitForSingleObject的