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");
}
Process Explorerは、(唯一の) スレッドがWait:DelayExecution
状態にあることを示しています。
ドキュメントによるとpthread_exit
:
最後のスレッドが終了した後、プロセスは終了ステータス 0 で終了します。動作は、実装がスレッド終了時に引数なしで exit() を呼び出したかのようになります。
私はDev-C++ v4.9.9.2とpthreads-win32 v2.8.0.0を使用しています(へのリンクlibpthreadGC2.a
)。
ライブラリは問題ないようです (たとえば、callingpthread_self
またはpthread_create
fromは正常にmain
動作します)。
pthread_exit
から電話してはいけない理由はありますmain
か?