Нужно ли мне проверять выход моих потоков?

У меня есть встроенное приложение, работающее как один процесс в Linux.

я использую sigaction() выявить проблемы, такие как ошибка сегментации и т. д.

У процесса есть несколько потоков, каждый из которых, как и приложение, должен работать вечно.

Мой вопрос заключается в том, должен ли (и как) я определить, умирает ли один из потоков.

Будет ли ошибка сегмента в потоке обнаружена приложением sigaction() обработчик?

Я думал об использовании pthread_cleanup_push/pop, но на этой странице написано "Если какой-либо поток внутри процесса вызывает exit, _Exit или _exit, то весь процесс завершается", поэтому мне интересно, будет ли обнаружен умирающий поток на уровне процесса…

1 ответ

Вам не обязательно проверять, завершен ли дочерний поток. Если вам нужно что-то сделать после завершения обработки дочерним потоком, вы можете вызвать thread_join() из основного потока, так что он будет ждать, пока дочерние потоки не завершат выполнение, а вы можете сделать все остальное после этого. Если вы используете thread_exit в основном потоке он будет завершен после завершения, оставляя порожденные потоки для продолжения выполнения. Процесс будет убит только после того, как все потоки завершат выполнение.

Если вы хотите проверить состояние порожденных потоков, вы можете использовать флаг, чтобы определить, работает он или нет. Проверьте эту ссылку для более подробной информации

Как вы запрашиваете pthread, чтобы увидеть, если он все еще работает?

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