Почему printf не работает в многопоточной программе? - PullRequest
1 голос
/ 05 декабря 2011

У меня многопоточная программа, и я не могу понять, почему 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;
}

Мой вопрос, почему это не так?t распечатать предложение "This MSG ...".

1 Ответ

4 голосов
/ 05 декабря 2011

Вы должны присоединить потоки к , чтобы дать им возможность запустить до выхода из основного потока.Когда один поток выходит из процесса, все остальные потоки уничтожаются.

Попробуйте:

pthread_join(n, NULL);
return 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...