Понимание pthread_detach

Следующие принты

In Main()
Hello World
Hello World

Почему это печатает Hello World дважды? Если я использую pthread_join (), желаемый вывод происходит (только один Hello World, которому предшествует In Main ().

#include 

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, все должно быть в порядке, верно?

Что мне здесь не хватает?

Ответы на вопрос(1)

Ваш ответ на вопрос