关于多线程一些疑问??

程序漫步 程序漫步 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区



#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 注释掉,为什么能报错啊,难道要等他处理完 还是 ?
...全文
评论 5
收藏 已收藏
分享
返回顶部
程序漫步
新手乐园 33,315 成员 41,769 内容