Когда я вызываю 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?