一原子操作:即是那种运行了不把这条语句执行完就不会把计算机控制权交给另一个线程控制
#include <iostream>
#include<Windows.h>
#include <process.h>
int num=0;
unsigned int __stdcall ThreadFun(PVOID pm)
{
InterlockedIncrement((LPLONG)&num); //原子操作
//std::cout<<"第"<<*((int*)pm)<<"线程PID:"<<GetCurrentThreadId()<<"说:"<<num<<std::endl;
return 0;
}
int main()
{
const int n =100;
int m =10;
unsigned int a[n];
HANDLE handle[n];
while(m){
num=0;
for(int i=0;i<n;i++){
handle[i] =(HANDLE)_beginthreadex(NULL,0,ThreadFun,&i,0,&a[i]);
}
WaitForMultipleObjects(n,handle,true,INFINITE);
m--;
std::cout<<num<<std::endl;
}
/*for(int j=0;j<n;j++)
std::cout<<a[j]<<std::endl;*/
system("pause");
return 0;
}
结果如下: