pthread_mutex_lock.c:62:__ pthread_mutex_lock:断言`互斥锁 - > __ data .__ owner == 0'失败

Dej*_*jwi 7 c++ multithreading pthreads c++11

我收到了这个错误:

pthread_mutex_lock.c:62:__ pthread_mutex_lock:断言`互斥锁 - > _ 数据._owner == 0'失败了.

我找不到任何原因.但是我不确定以下代码:

声明:

std::mutex lock;
std::condition_variable cond;
Run Code Online (Sandbox Code Playgroud)

锁定和解锁序列:

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

cond.wait(lk);

lock.unlock();
Run Code Online (Sandbox Code Playgroud)

如果我删除这个序列 - 一切正常,但没有任何保护.我不确定我unique_lock是否正确使用.

Raf*_*cki 6

std::unique_lock其他锁在构造函数中获取互斥体并在析构函数中释放它。您lock.unlock()手动调用代码,使其有效调用两次。

删除该语句后,您的代码应该可以正常工作。

  • 或者,调用“lk.unlock()”,以便锁知道互斥体已被解锁。(也许可以将互斥体称为“锁”以外的其他名称,这样您就不会将其与锁混淆)。 (3认同)