pthread_join висит навсегда

Моя программа навсегда зависает в pthread_join, и я не знаю почему. Я пытаюсь перенести класс потока из qnx в linux. Это не должно быть так сложно, так как обе системы соответствуют стандарту posix. Вот фрагмент кода с соединением pthread:

void Thread::stop()
{
  mutexThread_.lock();
  if (threadJoinable)
  {
    eventCancellationPending_.set();
    if (pthread_equal(pthread_self(), thread))
    {
      //thread ids equal
      pthread_detach(thread);
    }
    else
    {
      //thread ids are not equal
        int returnValue;
      returnValue = pthread_join(thread, NULL);
    }
    threadJoinable = false;
  }
  mutexThread_.unlock();
}

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

0 ответов

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