Метод проверки, вернулась ли нить или нет?

Моя основная программа (весь код c) запускает серверную функцию как отдельный поток (pthread_create). Эта функция ожидает входящего ввода и выполняет с ним определенные действия. Между тем основная программа также продолжает работать (основная программа не ждет, пока функция сервера завершит свою работу, прежде чем продолжить).

Теперь существует вероятность возникновения ошибки в функции сервера (проблема с сокетом,...). Затем функция сервера возвращает определенное значение (например, "-1"). Если это так, я хочу прервать выполнение всей программы.

Как я могу справиться с этим?

Моя единственная идея - запустить второй поток, который постоянно проверяет глобальную переменную, которую серверный поток изменяет в случае ошибки. Затем второй поток обрабатывает программу прерывания.

Какие еще варианты у меня есть?

С уважением

1 ответ

Вы можете использовать pthread_join, чтобы дождаться завершения дочернего потока в родительском потоке. Или pthread_cond_wait для реализации подобных вещей.

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