以下のプリント
In Main()
Hello World
Hello World
Hello World が 2 回出力されるのはなぜですか? pthread_join() を使用すると、目的の出力が発生します (In Main() が先行する Hello World は 1 つだけです)。
#include <pthread.h>
void *thread_func(void *arg);
int main(int argc, char **argv)
{
int s;
void *res;
pthread_t t1;
s = pthread_create(&t1, NULL, thread_func, "Hello World\n");
if (s != 0)
printf("Err\n");
printf("In Main()\n");
s = pthread_detach(t1);
if (s != 0)
printf("Err\n");
return 0;
}
void *thread_func(void *arg)
{
char *s = (char *)arg;
printf("%s", s);
pthread_exit(0);
}
pthread_detach は、スレッドが終了すると、pthread によって使用されるすべてのリソースを解放するようにライブラリに指示することを理解しています...そして、thread_func の最後で終了するので、すべて問題ないはずですよね?
ここで何が欠けていますか?