关于多线程一些疑问??
#include "stdafx.h"
#include <stdio.h>
#include <process.h>
#include <windows.h>
long g_nNum;
unsigned int __stdcall Fun(void *pPM);
const int THREAD_NUM = 200;
CRITICAL_SECTION g_csThreadCode;
int main()
{
g_nNum = 0;
HANDLE handle[THREAD_NUM];
InitializeCriticalSection(&g_csThreadCode);
int i = 0;
while (i < THREAD_NUM)
{
handle[i] = (HANDLE)_beginthreadex(NULL, 0, Fun, NULL, 0, NULL);
i++;
}
//Sleep(1000); (如果注释掉为什么会报错???)
DeleteCriticalSection(&g_csThreadCode);
system("pause");
return 0;
}
unsigned int __stdcall Fun(void *pPM)
{
EnterCriticalSection(&g_csThreadCode);
g_nNum++;
printf("全局资源值为%d\n", g_nNum);
LeaveCriticalSection(&g_csThreadCode);
return 0;
}
上面那个 sleep 注释掉,为什么能报错啊,难道要等他处理完 还是 ?
...全文


新手乐园
