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