CreateMutex,WaitForSingleObject一定要在线程里面才阻塞? int _tmain(int argc, _TCHAR* argv[]){ mutex = CreateMutex( NULL, FALSE, NULL ); WaitForSingleObject( mutex, INFINITE ); WaitForSingleObject( mutex, INFINITE ); printf("here"); return 0;}这样写程序不会阻塞住,是不是一定要放到两个线程里面才行? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 mutex创建成功了吗?wait时,值是什么? int _tmain(int argc, _TCHAR* argv[])不是线程吗,显然是主线程。看看CreateMutex的参数吧。你那个是创建就唤醒的。这样这么能停止。你需要创建一个自己手动呼唤的。这样肯定就可以了 因为你创建的mutex一开始没有拥有者所以第一次WaitForSingleObject会使当前线程获得mutex的所有权,并立即返回mutex的所有线程再次等待mutex时也不会阻塞,因此第二次WaitForSingleObject也会马上返回 mutex = CreateMutex( NULL, FALSE, NULL );第二个参数传入FALSE, mutex 互斥量内核对象的线程ID和递归计数都被设为0,这意味着互斥量不为任何线程占用,处于触发状态。WaitForSingleObject 如果互斥量内核对象已经处于触发状态,线程是不会进入等待状态的。 因为你是在同一个线程中调用WaitForSingleObject的 数组初始化{在线等} 无法找到动态连接库的问题 VC 6.0 操作Excel表,打开excel 失败。。。 高分求助..如何查杀服务进程 vc调用vb的dll 对话上的字符大小 LPCSTR 和 string互相转换 vb6中如何实现多线程? 为什么我不能在Vc代码中加入断点 请问:如何在程序中得到哪些计算机在访问我的共享文件夹? MFC 中的网页开发 请教关于TCP/IP协议的知识?
不是线程吗,显然是主线程。
看看CreateMutex的参数吧。你那个是创建就唤醒的。这样这么能停止。
你需要创建一个自己手动呼唤的。这样肯定就可以了
所以第一次WaitForSingleObject会使当前线程获得mutex的所有权,并立即返回
mutex的所有线程再次等待mutex时也不会阻塞,因此第二次WaitForSingleObject也会马上返回