2016wapjpc 发表于 2017-7-23 16:06

[笔记]线程--事件之同步

本帖最后由 2016wapjpc 于 2017-7-23 16:24 编辑

线程还有一个重要的应用就是同步,先后交替执行



#include "stdafx.h"
#include <windows.h>

HANDLE g_hSet,g_hClear;

int g_Max = 10;
int g_Number = 0;

DWORD WINAPI ThreadProduct(LPVOID pM)
{
      for(int i = 0;i<g_Max;i++)
      {

                WaitForSingleObject(g_hSet,INFINITE);

                g_Number =1;

                DWORD id = GetCurrentThreadId();

                printf("product %d datas %d putin cache\n",id,g_Number);

      //设置事件的状态为已通知
                SetEvent(g_hClear);
      }
    return 0;
}

DWORD WINAPI ThreadConsumer(LPVOID pM)
{
      for(int i = 0;i<g_Max;i++)
      {
                //wait自己的事件,当得到事件的状态为已通知时,向下执行
                WaitForSingleObject(g_hClear,INFINITE);
               
                g_Number =0;
               
                DWORD id = GetCurrentThreadId();
               
                printf("Consumser %d datas %d putin cache\n",id,g_Number);
      //设置生产者事件的状态为已通知      
                SetEvent(g_hSet);
      }
    return 0;
}



麦迪就是帅 发表于 2017-7-23 16:57

尽然没有看懂!!

TryCatch 发表于 2017-7-24 11:17

小白表示没看懂~~~~
页: [1]
查看完整版本: [笔记]线程--事件之同步