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

时间:2012-02-11 11:56:24

标签: c++ multithreading pthreads c++11

我收到了这个错误:

  

pthread_mutex_lock.c:62:__ pthread_mutex_lock:断言`mutex-> _ 数据。 _owner == 0'失败。

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

声明:

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

锁的序列&解锁:

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

cond.wait(lk);

lock.unlock();

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

1 个答案:

答案 0 :(得分:2)

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

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