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) вызывается, когда новый поток должен быть запущен, а старый должен быть остановлен. Есть идеи?