Почему pthread_exit(0) зависает в программе?

Запуск следующего кода C приводит к зависанию программы и не отвечает на сигналы (включая CTRL-C).

int main()
{
    pthread_exit(0);
    return 0;
}

Есть идеи почему?

Поведение является нормальным, когда другие потоки были созданы и работают, но я хотел бы знать, должен ли я всегда проверять это перед использованием pthread_exit(0).

РЕДАКТИРОВАТЬ: Это полный код, который висит. Однако я собирал с помощью glib (-lglib-2.0). Использование просто cc -o foo foo.c работает как положено.

1 ответ

Весь ваш вариант использования описан в примечаниях к справочной странице pthread_exit. В вашем случае, когда вы правильно отредактировали свой OP, glib запустил другой поток. Вы вышли из основного потока, а другой поток продолжил работу. Вы отметили это как зависание. В общем, если вы хотите выйти из приложения в полном объеме, просто используйте exit или вернуться из main(),

Только когда вам нужна дополнительная магия (редко), например, отдельные нити, используйте pthread_exit() в основной теме.

Другие вопросы по тегам