为什么printf不能在多线程程序中工作?

时间:2011-12-05 08:59:02

标签: c linux pthreads

我有一个多线程程序,无法弄清楚为什么printf无法按预期工作。

这是我的代码:

#include <pthread.h>
#include <stdio.h>

void *Msg(void *arg)
{
        pthread_t x;
        x= pthread_self();
        printf("x=%ld\n", x);
        printf("This MSG from a thread \n");
        pthread_exit((void*)0);
}



int main()
{
    pthread_t n;
    pthread_create(&n, NULL, Msg, NULL);
    pthread_create(&n, NULL, Msg, NULL);
    printf("Mother thread\n");
        return 0;
}

我的问题是为什么它不打印“This MSG ......”这句话。

1 个答案:

答案 0 :(得分:4)

在主线程退出之前,您应该加入线程以让他们有机会运行。当一个线程退出进程时,所有其他线程都将被终止。

尝试:

pthread_join(n, NULL);
return 0;