Почему этот код не работает? - PullRequest
2 голосов
/ 21 февраля 2012
void myThread(void *arg) {
    printf("Thread ran!\n");
    pthread_exit( NULL );
}

int main() {
    int ret;
    pthread_t mythread;
    ret=pthread_create(&mythread,NULL,myThread,NULL);
    if (ret != 0) {
            printf( "Can’t create pthread (%s)\n", strerror(errno ) );
            exit(-1);
    }
    return 0;
}

Ответы [ 2 ]

9 голосов
/ 21 февраля 2012

Поскольку main возвращается немедленно, прежде чем поток успел выполнить, попробуйте добавить sleep(1000); до return 0;, и вы, вероятно, обнаружите, что он работает.

Если вы хотите, чтобы main дождался окончания потока, попробуйте pthread_join (но тогда у вас может не быть потока вообще).

pthread_join(mythread, 0);
return 0;
5 голосов
/ 21 февраля 2012

Вы должны ждать в главном потоке, используйте pthread_join() после вызова pthread_create().

...