我收到了那个错误:
pthread_mutex_lock.c:62: __pthread_mutex_lock: Assertion `mutex->_data._owner == 0' failed.
而且我找不到任何原因。但是我不确定以下代码:
声明:
std::mutex lock;
std::condition_variable cond;
锁定和解锁的顺序:
std::unique_lock<std::mutex> lk(lock);
cond.wait(lk);
lock.unlock();
如果我删除这个序列 - 一切正常,但没有任何保护。我不确定我是否正确使用了 unique_lock
。
最佳答案
std::unique_lock
和其他锁在构造函数中获取互斥量并在析构函数中释放它。
您在代码中手动调用了 lock.unlock()
,使其被有效调用了两次。
删除该语句后,您的代码应该可以正常工作。
关于c++ - pthread_mutex_lock.c :62: __pthread_mutex_lock: Assertion `mutex->__data.__owner == 0' failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9239999/