// ThreadyzLock1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
#include "conio.h"
long g_Value=0;
long g_Value2=0;
DWORD WINAPI InterProcl(LPVOID pParam){
for(int nIndex=0;nIndex<10000000;nIndex++){
g_Value++;
}
return 0;
}
//使用原子锁
DWORD WINAPI InterProcl2(LPVOID pParam){
for(int nIndex=0;nIndex<10000000;nIndex++){
//加减运算等
InterlockedIncrement(&g_Value2);
}
return 0;
}
void Create(){
DWORD tID=0;
char psText[]="";
HANDLE hThread[4]={NULL};
hThread[0]=CreateThread(NULL,0,InterProcl,NULL,0,&tID);
hThread[1]=CreateThread(NULL,0,InterProcl,NULL,0,&tID);
hThread[2]=CreateThread(NULL,0,InterProcl2,NULL,0,&tID);
hThread[3]=CreateThread(NULL,0,InterProcl2,NULL,0,&tID);
//等候单个线程结束
//WaitForSingleObject(hThread,INFINITE);
//等候多个线程结束
//第二句柄数组,第四等候时间
//第三个参数是true 等候每个线程都有事件解除堵塞 flash 等候其中一个解除堵塞
WaitForMultipleObjects(4,hThread,true,INFINITE);
printf("Value1: %d\n",g_Value);
printf("Value2: %d\n",g_Value2);
getch();
}
int main(int argc, char* argv[])
{
Create();
return 0;
}
线程原子锁用法 14.4.29
最新推荐文章于 2024-04-19 09:21:52 发布