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