好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 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;
}
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|