pthread_mutex_lock.c: 62: __pthread_mutex_lock: не удалось подтвердить утверждение `mutex -> __ data .__ owner == 0 ' - PullRequest
7 голосов
/ 11 февраля 2012

Я получил эту ошибку:

pthread_mutex_lock.c: 62: __pthread_mutex_lock: утверждение `mutex -> _ data. _owner == 0 'не выполнено.

И я не могу найти причину этого. Однако я не уверен насчет следующего фрагмента кода:

Объявления:

std::mutex lock;
std::condition_variable cond;

Последовательность блокировок и разблокировок:

std::unique_lock<std::mutex> lk(lock);

cond.wait(lk);

lock.unlock();

Если убрать эту последовательность - все работает нормально, но без какой-либо защиты. Я не уверен, правильно ли я использую unique_lock.

1 Ответ

2 голосов
/ 11 февраля 2012

std::unique_lock и другие блокировки получают мьютекс в конструкторе и освобождают его в деструкторе.Вы вызвали lock.unlock() в своем коде вручную, сделав его дважды эффективным.

После удаления этого оператора ваш код должен работать правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...