zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    solr总结
    jeesite
    Freemarker模板的使用简介
    Sd
    Sd
    Sd
    Standard Java集合类问题待整理
    Standard
    Linux并发服务器设计
    Java 生产者消费者 & 例题
  • 原文地址:https://www.cnblogs.com/findumars/p/9147401.html
Copyright © 2011-2022 走看看