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
A
ответ
4
Вы должны подождать в основной теме, используйте pthread_join()
после звонка pthread_create()
.
8
Потому что main
возвращается сразу, прежде чем поток имеет шанс выполнить - попробуйте добавить sleep(1000);
до return 0;
, и вы, вероятно, обнаружите, что он работает.
Если вы хотите, чтобы main
подождал, пока закончится нить, попробуйте pthread_join (но тогда у вас также может не получиться нить).
pthread_join(mythread, 0);
return 0;
Почему сон() ваш первый совет? В этом случае это плохая практика. – UmNyobe
Просто, чтобы продемонстрировать, действительно. Очевидно, что спят, но не настолько очевидны, что делает pthread_join, если вы новичок в многопоточности. –
Спасибо, но учтите, что ошибки этого кода выглядят следующим образом: 1) неопределенная ссылка на 'pthread_create '\t 2) make: *** [Test] Ошибка 1 –