提升scoped_lock每次都失败
Boost scoped_lock failed every time
在一个类中,我想在这样的函数上使用互斥锁
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。
但我认为问题是我的程序,但我看不到在哪里。在我的测试中,这个函数中只有一个线程。
问题是在程序中,使用互斥锁的线程需要处于同一级别。然而,创建此错误的线程是主线程。不是创造的。
相关文章:
- 如果没有malloc,链表实现将失败
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 视图中的参数推导失败:take_while
- 链接到自行创建的dll失败
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- gcc和c++17的过载解析失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 从父数组测试用例构造二叉树失败
- LibGit2 SSH身份验证失败
- 如何让LLDB在成功时退出,在失败时等待
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- 生成MRPT库时cmake配置失败
- 为什么除非添加括号,否则构造函数上的模板替换会失败?
- std::mutex::lock在Windows上失败,错误码3