关于多线程问题
#include<stdio.h>#include<Windows.h>
int num=0;
CRITICAL_SECTION gs;
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
int ntmp=0;
for(int i=0;i<10;i++)
{
EnterCriticalSection(&gs);
ntmp=num;
ntmp++;
Sleep(1);
num=ntmp;
LeaveCriticalSection(&gs);
}
return 0;
}
int main(int argc,char*argv[])
{
InitializeCriticalSection(&gs);
HANDLE hThread[10]={0};
for( int i=0;i<10;i++)
{
hThread[i]=CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
if(hThread[i]=NULL)
{
printf("%d createthread error \r\n",i);
}
}
WaitForMultipleObjects(10,hThread,TRUE,INFINITE);
printf("%d \r\n",num);
for(i=0;i<10;i++)
{
CloseHandle(hThread[i]);
}
DeleteCriticalSection(&gs);
return 0;
}
我的电脑输出时0,但是书上说结果应该是100,哪位高手能帮小弟看看?