Ниже приведена программа, для которой я ожидаю, что программа зайдет в тупик, потому что pthread_join() - это блокирующее ожидание в потоке (ожидание завершения).
Но я вижу, что pthread_join() не блокируется и возвращается с ошибкой (35)
Можете ли вы помочь мне понять, почему pthread_join() разблокируется? Потому что основной поток еще не завершен, и, вероятно, это должно быть тупиком?
#include <pthread.h>
int
main(int argc, char *argv[])
{
void *res;
int s;
printf("Message from main()\n");
s = pthread_join(pthread_self(), &res);
if (s != 0)
printf("pthread_join(): %d",s);
printf("Thread returned %d\n", (int) res);
exit(0);
}
Вот результат:
Message from main()
pthread_join(): 35
Thread returned 134514009
printf("pthread_join(): %d",s);
сделайте{errno = s; perror("pthread_join()");}
, и вы можете получить поучительную информацию. - person alk   schedule 07.06.2014