use*_*788 13 c winapi program-entry-point pthreads exit
当我打电话pthread_exit
时main
,程序永远不会终止.我期望程序完成,因为我退出程序的唯一线程,但它不起作用.好像挂了.
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int main(int argc, char *argv[])
{
printf("-one-\n");
pthread_exit(NULL);
printf("-two-\n");
}
Run Code Online (Sandbox Code Playgroud)
Process Explorer显示(仅)线程处于Wait:DelayExecution
状态.
根据pthread_exit
文件:
在最后一个线程终止后,进程将以退出状态0退出.行为应该就像实现在线程终止时调用带有零参数的exit()一样.
我正在使用Dev-C++ v4.9.9.2和pthreads-win32 v2.8.0.0(链接libpthreadGC2.a
).
该库似乎是确定(例如,呼叫pthread_self
或pthread_create
从main
正常工作).
是否有什么我不应该调用任何理由pthread_exit
从main
?
tor*_*rak 16
那么它在Linux执行并行线程的肯定合法,请参见注释部分pthreads_exit.它指出
要允许其他线程继续执行,主线程应该通过调用pthread_exit()而不是exit(3)来终止.
此外,在这里查看源代码(扭转末尾)表明它大致转换为_endthread或_endthreadex.这里的文档没有提到在初始线程中没有调用它.
Jen*_*edt 15
这完全合法和预期的行为.整个过程仅在所有线程终止或exit
显式或隐式调用时结束.
正常的返回来自main
等同于对exit
.的调用.如果结束main
与pthread_exit
你在说明确你想要的其他线程继续.
归档时间: |
|
查看次数: |
10405 次 |
最近记录: |