c++ - boost::lock 在 boost 1.53 中无法编译

标签 c++ boost locking

我正在编译一个项目。它有以下几行:

boost::mutex::scoped_lock ml(m_meta_mut, boost::defer_lock);
    boost::mutex::scoped_lock tl(m_tables_mut, boost::defer_lock);
    boost::lock(ml, tl);

我在第三行收到lock is not a member of boost。我用的是boost1.53(项目推荐1.49)

问题是什么

最佳答案

将我的评论变成更完整的答案。 boost::lock()功能是defined in boost/thread/locks.hpp .当你看到编译器错误时

error: ‘lock’ is not a member of ‘boost’

编译器找不到函数 lock()boost命名空间。 解决方案是添加#include <boost/thread/locks.hpp>在您正在编译的任何翻译单元中。

我没有看到此 header 从 boost 1.49 到 boost 1.53 的变化,尽管我没有仔细查看。可能包含指令已更改。

编辑: 1.67还是一样

关于c++ - boost::lock 在 boost 1.53 中无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17303167/

相关文章:

c++ - 在 C++ 中克隆一个 wchar_t*

c++ - 在 Windows 上默认启用 GCC 编译器 C++11 标志

队列上的 C# 锁和多线程

linux - 如何防止国外应用程序在linux上打开串口?

c# - 锁定传递的对象会发生什么?

java - 从 Android Java 调用 ndk c++ 函数后,字符串得到一个奇怪的形式

c++ - 嵌入python并多次运行

c++ - boost 或 STL 是否有用于比较两个 char 值的谓词?

C++ ASIO : Asynchronous sockets and threading

c++ - 在 ubuntu 12.04 中编译安装 boost 1.34.1