C++ 多线程阻塞 (多线程同步)(MsgWaitForMultipleObjects)(连着消息一起控制,牛)


在主线程定要禁止使用waitforsingleobject(),原因是会阻塞主线程的消息循环,所以必须使用另一种 MsgWaitForMultipleObjects,即可以让消息通过,下面就是一个基于MsgWaitForMultipleObjects与Event,实现多线程同步这样。

HANDLE g_Handle;//全局的句柄 g_Handle=CreateEvent(NULL,FALSE,FALSE,NULL); ResetEvent(g_Handle); //无信号,即阻塞了 //block here till the event was signal while(TRUE) { DWORD result; MSG msg; result=MsgWaitForMultipleObjects(1,&g_Handle,FALSE,INFINITE,QS_ALLINPUT); if(WAIT_OBJECT_0 == result) break; PeekMessage(&msg,NULL,0,0, PM_REMOVE); DispatchMessage(&msg); } //在另一个线程调用setEvent(g_Handle);即变为有信号状态,阻塞即解除 //do something~
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

更多文章:http://blog.csdn.net/what951006?viewmode=list 
powered by:小乌龟在大乌龟背上~

版权声明:转载请声明出处,谢谢~ https://blog.csdn.net/what951006/article/details/75353060


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM