Когда я звоню pthread_exit
от main
, программа никогда не заканчивается. Я ожидал, что программа завершится, так как я вышел из единственного потока программы, но он не работает. Кажется, он висел.Можно ли вызвать pthread_exit из main?
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int main(int argc, char *argv[])
{
printf("-one-\n");
pthread_exit(NULL);
printf("-two-\n");
}
Process Explorer показывает, что (только) поток находится в состоянии Wait:DelayExecution
.
Согласно pthread_exit
документации:
Процесс должен выйти с выходом статусом 0 после последней нити был прекращен. Поведение должно быть , как если бы реализация называлась exit() с нулевым аргументом в потоке времени окончания.
Я использую Dev-C++ v4.9.9.2 и Pthreads-win32 v2.8.0.0 (связываннии libpthreadGC2.a
).
Библиотека кажется ОК (например, звонок pthread_self
или pthread_create
от main
отлично работает).
Есть ли причина для того, что я не должен называть pthread_exit
от main
?
Почему вы не возвращаете 0; 'вместо' pthread_exit (NULL); '? –
Я знаю, что я возвращаюсь или возвращаюсь. Я просто хочу знать, можно ли закончить основной поток, вызвав 'pthread_exit'. – user429788
Возврат из main() очень отличается от работы pthread_exit(). Последний позволит оставшимся живым потокам закончить, а затем выйти с возвратным значением 0. Бывший немедленно прекратит все. –