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.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()
,使其有效地调用了两次。
删除该语句后,您的代码应该可以正常工作。
相关文章:
- 如何在没有死锁和/或争用的情况下正确使用 std::mutex C++?
- std::mutex 如何防止线程修改?
- 在 c++11 中为 pthread 设置调度参数
- 如果不包含 pthread,为什么 GCC 的线程标准库实现会抛出异常?
- DRD 报告"conflicting load" std::mutex::lock 上的错误
- 是否需要 mutex() 来安全地同时访问具有 2 个线程的数组的不同元素?
- pthread只有在线程数量较少时才可以正常工作
- std::atomic 和 std::mutex 的相对性能
- 如何解决"'mutex' in namespace 'std' does not name a type"?
- pthread执行时间比顺序执行时间差
- 使用 -pthread 如何不违反 ODR 规则?
- 使用 pthread 的多线程
- std::lock_guard 怎么可能比 std::mutex::lock() 更快?
- 当"std::lock_guard<std::mutex>"对象没有名称时的不同行为
- std::mutex::lock() 产生奇怪(和不必要的)ASM 代码
- 使用 std::mutex 保护环路
- 销毁 pthread 互斥体和 C++ 中的取消初始化顺序
- 在哪里放置pthread Mutex和con var,以确保激活所有功能
- 在Windows中使用PTHREAD的Mutex
- PThread Mutex Lock & Unlock on Stack