После pthread_cancel(), зависание вызова функции pthread_join()

Я написал приложение, которое создает поток и запускает цикл while. В приложении после создания потока я переопределил fork() системный вызов с pthread_atfork(), [когда fork называется, prepare Вызывается вызов функции, которая отменяет поток, и после порождения дочернего процесса тот же поток снова создается.]

У меня проблема в приведенной выше логике, когда один и тот же код скомпилирован для другой цели, происходит зависание в pthread_join(),

  1. порождает поток, который входит в цикл while (я добавил состояние отмены = включено и тип отмены = асинхронные + точки отмены также рассматриваются)
  2. переопределение fork() с pthread_atfork(),
  3. когда fork() системный вызов выполнен, приготовление-функция отменяет запущенный поток с pthread_cancel а также pthread_join() применяется для проверки завершения потока.

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

У меня есть некоторые сомнения

  1. pthread_cancel() это безопасно звонить?
  2. с отменой состояния = включен и тип асинхронный, делает pthread_cancel() немедленно отменить тему?
  3. Или есть какой-нибудь альтернативный способ отменить тему?

0 ответов

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