zoukankan      html  css  js  c++  java
  • 事件同步(一)-——CreateEvent( )事件对象实现线程同步

    事件对象分为两类:人工重置事件对象和自动重置事件对象。
    对于人工重置事件对象,可以同时有多个线程等待到事件对象,成为可调度线程。

    对于自动重置事件对象,等待该事件对象的多个线程只能有一个线程成为可调度线程。此外,如果事件对象为自动重置事件对象,当某个线程等待到事件对象后,系统将自动将事件对象设置为未通知对象...

    #include "windows.h"
    #include <iostream>
    int number = 1;
    
    HANDLE hEvent;
    
    unsigned long _stdcall ThreadProc1(void *lpParameter) //线程1
    {
        while (number < 100)
        {
            WaitForSingleObject(hEvent, INFINITE);
            std::cout << "线程1当前计数:" <<number<<std::endl;
            number++;
            Sleep(100);
            SetEvent(hEvent);//设置事件为有信号状态;
        }
        return 0;
    }
    unsigned long _stdcall ThreadProc2(void *lpParameter) //线程2
    {
        while (number < 100)
        {
            WaitForSingleObject(hEvent, INFINITE);
            std::cout << "线程2当前计数:" << number << std::endl;
            number++;
            Sleep(1000);
            SetEvent(hEvent);
        }
        return 0;
    }
    int main(int argc, char *argv[])
    {
        HANDLE hThread1 = CreateThread(NULL, 0, ThreadProc1, NULL, 0, NULL);
        HANDLE hThread2 = CreateThread(NULL, 0, ThreadProc2, NULL, 0, NULL);
        hEvent = CreateEvent(NULL, FALSE, TRUE, "event");
        CloseHandle(hThread1);
        CloseHandle(hThread2);
        while (true)
        {
            ;
        }
        return 0;
    }
  • 相关阅读:
    关于ArcMap中的地图文档单位
    洛谷—— P2983 [USACO10FEB]购买巧克力Chocolate Buying
    COGS——T 826. [Tyvj Feb11] GF打dota
    洛谷—— P1855 榨取kkksc03
    洛谷—— P2663 越越的组队
    COGS——T 1578. 次小生成树初级练习题
    Django中间件
    March 7 2017 Week 10 Tuesday
    March 6 2017 Week 10 Monday
    March 5 2017 Week 10 Sunday
  • 原文地址:https://www.cnblogs.com/tinaluo/p/7686816.html
Copyright © 2011-2022 走看看