• 事件线程同步


    // wondows原理day002.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include<windows.h>
    
    
    //3个全局事件对象句柄
    HANDLE hEventA, hEventB, hEventC;
    
    
    //线程A
    DWORD WINAPI ThreadProc1(_In_ LPVOID lpParameter)
    {
        for (int i = 0; i < 10; i++)
        {
            WaitForSingleObject(hEventA, -1);
            printf("A
    ");
            //关闭自己,打开下一个要打印的事件对象
            ResetEvent(hEventA);
            SetEvent(hEventB);
        }
        return 0;
    }
    
    
    
    //线程B
    DWORD WINAPI ThreadProc2(_In_ LPVOID lpParameter)
    {
        for (int i = 0; i < 10; i++)
        {
            WaitForSingleObject(hEventB, -1);
            printf("B
    ");
            //关闭自己,打开下一个要打印的事件对象
            ResetEvent(hEventB);
            SetEvent(hEventC);
        }
        return 0;
    }
    
    
    
    //线程C
    DWORD WINAPI ThreadProc3(_In_ LPVOID lpParameter)
    {
        for (int i = 0; i < 10; i++)
        {
            WaitForSingleObject(hEventC, -1);
            printf("C
    ");
            //关闭自己,打开下一个要打印的事件对象
            ResetEvent(hEventC);
            SetEvent(hEventA);
        }
        return 0;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    
    
    
        //创建3个事件对象
        hEventA = CreateEvent(NULL, TRUE, TRUE, L"A");
        hEventB = CreateEvent(NULL, TRUE, FALSE, L"B");
        hEventC = CreateEvent(NULL, TRUE, FALSE, L"C");
    
    
    
        //创建3个线程,分别实现打印A,B,C
        HANDLE hThread1 = CreateThread(NULL, NULL, ThreadProc1, NULL, NULL,NULL);
        HANDLE hThread2 = CreateThread(NULL, NULL, ThreadProc2, NULL, NULL, NULL);
        HANDLE hThread3 = CreateThread(NULL, NULL, ThreadProc3, NULL, NULL, NULL);
    
    
    
        //等待线程返回
        WaitForSingleObject(hThread1, -1);
        WaitForSingleObject(hThread2, -1);
        WaitForSingleObject(hThread3, -1);
        HANDLE arrHandle[] = { hThread1, hThread2, hThread3 };
    
    
    
    
        //也可以用下面的多对象等待
        //WaitForMultipleObjects(3,arrHandle,TRUE,INFINITE)
    
        system("pause");
        return 0;
    }
    让数据变得更安全!
  • 相关阅读:
    XSS的本质和防御
    关于网站的数据安全总结
    教培行业的复杂性
    教育到底想要什么(一)
    如何在流中重复获取body数据内容
    教育到底想要什么(二)
    鼓吹海
    翻译:三分钟学懂JSON
    翻译:ASP.NET MVC 3:Razor的隐式和显示代码嵌入
    分享到各种热门网站的html代码实现
  • 原文地址:https://www.cnblogs.com/Alyoyojie/p/5317038.html
Copyright © 2020-2023  润新知