线程原子锁用法 14.4.29

// 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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值