После pthread_cancel(), зависание вызова функции pthread_join()
Я написал приложение, которое создает поток и запускает цикл while. В приложении после создания потока я переопределил fork()
системный вызов с pthread_atfork()
, [когда fork
называется, prepare
Вызывается вызов функции, которая отменяет поток, и после порождения дочернего процесса тот же поток снова создается.]
У меня проблема в приведенной выше логике, когда один и тот же код скомпилирован для другой цели, происходит зависание в pthread_join()
,
- порождает поток, который входит в цикл while (я добавил состояние отмены = включено и тип отмены = асинхронные + точки отмены также рассматриваются)
- переопределение
fork()
сpthread_atfork()
, - когда
fork()
системный вызов выполнен, приготовление-функция отменяет запущенный поток сpthread_cancel
а такжеpthread_join()
применяется для проверки завершения потока.
Здесь возникает проблема, pthread_join()
не возвращается вышеуказанное поведение наблюдается в одной конкретной целевой среде.
У меня есть некоторые сомнения
pthread_cancel()
это безопасно звонить?- с отменой состояния = включен и тип асинхронный, делает
pthread_cancel()
немедленно отменить тему? - Или есть какой-нибудь альтернативный способ отменить тему?