pthread_mutex_lock.c:62: __pthread_mutex_lock:断言"互斥>__data.__所有者 == 0"失败

pthread_mutex_lock.c:62: __pthread_mutex_lock: Assertion `mutex->__data.__owner == 0' failed

本文关键字:pthread mutex lock data 所有者 失败 gt 断言 互斥      更新时间:2023-10-16

我收到错误:

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

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

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