提升scoped_lock每次都失败

Boost scoped_lock failed every time

本文关键字:失败 lock scoped 提升      更新时间:2023-10-16

在一个类中,我想在这样的函数上使用互斥锁

void Agent::notify(Packet& packet, Peer peer) {
    boost::mutex::scoped_lock lock(mutex_);
    ...
}

编译过程没有问题。但是当我执行程序时,boost总是在这一行失败,说:

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::lock_error> >'
  what():  boost: mutex lock failed in pthread_mutex_lock: Invalid argument
Abandon (core dumped)

我尝试使用lock()unlock方法,但同样的问题。当我使用try_lock时,它不会因条件总是 false 而失败。

在互联网上搜索我找到了这个 https://svn.boost.org/trac/boost/ticket/9307。

但我认为问题是我的程序,但我看不到在哪里。在我的测试中,这个函数中只有一个线程。

问题是在程序中,使用互斥锁的线程需要处于同一级别。然而,创建此错误的线程是主线程。不是创造的。