更多使用请参见 http://blog.csdn.net/xiaobai1593/article/details/6934278
临界区的使用
#include <iostream>
#include <windows.h>
#include <process.h>
using namespace std;
int sharek;
CRITICAL_SECTION csMyCriticalSection;
unsigned int WINAPI ThreadFunc(void* pvParam){
int i = 0;
while( i<10 ){
++i;
EnterCriticalSection (&csMyCriticalSection);
cout <<"id:"<< static_cast<char*>(pvParam)<<" i="<<i<< endl;
LeaveCriticalSection (&csMyCriticalSection);
}
_endthreadex(2);
return 1;
}
int main()
{
InitializeCriticalSection (&csMyCriticalSection);
unsigned int threadId;
char thparam[1000][100];
int ii = 0;
for(ii=0;ii<1000;++ii){
sprintf(thparam[ii],"thread%d",ii+1);
HANDLE thread = (HANDLE)_beginthreadex(NULL, 0, ThreadFunc, thparam[ii], 0, &threadId);
}
Sleep(9100);
EnterCriticalSection (&csMyCriticalSection);
cout<<"sharek:"<<sharek<<endl;
LeaveCriticalSection (&csMyCriticalSection);
DeleteCriticalSection(&csMyCriticalSection);
return 0;
}