事件g_Events

// Events.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <WinSock2.h>
#include <Windows.h>

using namespace std;

HANDLE g_Events[2] = {0};


UINT32 _stdcall CallBack(LPVOID lParam);
int _tmain(int argc, _TCHAR* argv[])
{
    //HANDLE ThreadHandle = CreateThread();
    //内核对象,返回值为句柄,并且配有安全属性
    //一般对象,返回值为句柄
                                    //自动 未授信  匿名
    g_Events[0] = CreateEvent(NULL,TRUE,FALSE,NULL);
    g_Events[1] = CreateEvent(NULL,TRUE,FALSE,NULL);


    HANDLE ThreadHandle = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)CallBack,NULL,0,NULL);

    int i = 0;
    for(i=0;i<20;i++)
    {
        printf("Main()\r\n");
        if(i==3)
        {
            SetEvent(g_Events[0]); //NO-->YES
            //Sleep(1);

            WaitForSingleObject(g_Events[1],INFINITE);
            //ResetEvent(g_Events[0]); //YES-->NO
        }
    }
    Sleep(INFINITE);
    return 0;
}


UINT32 _stdcall CallBack(LPVOID lParam)
{
    int i = 0;
    //等待事件A授信
    WaitForSingleObject(g_Events[0],INFINITE);

    printf("SubMain()\r\n");
    //ResetEvent(g_Events[0]);
    WaitForSingleObject(g_Events[0],INFINITE);
    SetEvent(g_Events[1]);
    printf("SubMain()\r\n");
    return 0;
}

 

posted @ 2016-07-22 15:38  卷珠帘  阅读(206)  评论(0编辑  收藏  举报