请教主线程与辅助线程哪个先执行,代码如下
答案:3 悬赏:50 手机版
解决时间 2021-04-06 11:54
- 提问者网友:饥饿走向夜
- 2021-04-06 08:16
请教主线程与辅助线程哪个先执行,代码如下
最佳答案
- 五星知识达人网友:佘樂
- 2021-04-06 08:54
你需要wait,你启动线程之后子线程还没来得及启动主线程就退出了。
修改如下:
HANDLE hThread1;
hThread1=CreatThread(NULL,0,Fun1Proc,NULL,0,NULL)
count<<"main thread is running"< WaitForsingleObject( hThread1, 3000 );
CloseHandle(hThread1);
}
修改如下:
HANDLE hThread1;
hThread1=CreatThread(NULL,0,Fun1Proc,NULL,0,NULL)
count<<"main thread is running"<
CloseHandle(hThread1);
}
全部回答
- 1楼网友:孤老序
- 2021-04-06 10:36
Sadusaga 说法不完全对,确切是说,并不是主线程退出了从线程就没法运行了,应该是,主线程,也就是Main函数返回之后,C/C++的运行时库直接调用了ExitProcess();,直接把进程退出了,因此从线程根本没机会执行。一般地,Windows会在所有线程都结束之后才会结束掉进程,而不是主线程退出就把进程结束了。如此主线程退出,而还有其他的从线程活着,Windows就会分配给其他线程时间片,让他们运行,而非强硬地结束进程。
你可以在Main返回之前调用ExitThread(0);来看一下,就会发现从线程运行了,这是因为主线程并没有调用ExitProcess()就退出了,因而进程会继续存在,从线程得到运行。
你可以在Main返回之前调用ExitThread(0);来看一下,就会发现从线程运行了,这是因为主线程并没有调用ExitProcess()就退出了,因而进程会继续存在,从线程得到运行。
- 2楼网友:青灯有味
- 2021-04-06 09:51
你的程序是因为,辅助线程在没有得到时间片时候,已经在主线程中把辅助线程关闭了,所以在hThread1=CreatThread(NULL,0,Fun1Proc,NULL,0,NULL)
之后加上延时(WaitForsingleObject或Sleep),让主线程休眠,同时把时间片交给辅助线程执行
之后加上延时(WaitForsingleObject或Sleep),让主线程休眠,同时把时间片交给辅助线程执行
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯