Когда я вызываю 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");
}
Проводник процессов показывает, что поток (только) находится в состоянии Wait:DelayExecution
.
Согласно документации pthread_exit
:
Процесс должен выйти с выходом статус 0 после последнего потока были прекращены. Поведение должно быть как если бы реализация называлась exit() с нулевым аргументом в потоке время окончания.
Я использую Dev-С++ v4.9.9.2 и pthreads-win32 v2.8.0.0 (ссылка на libpthreadGC2.a
).
Библиотека кажется ОК (например, вызов pthread_self
или pthread_create
из main
отлично работает).
Есть ли причина, по которой я не должен называть pthread_exit
от main
?