5

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

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)

问题是什么

4

1 回答 1

4

将我的评论变成更完整的答案。这些boost::lock()函数在 boost/thread/locks.hpp中定义。当您看到编译器错误时

错误:'lock' 不是 'boost' 的成员

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

我没有看到这个标题从 boost 1.49 到 boost 1.53 的变化,尽管我没有仔细看。可能包含指令已更改。

编辑: 在 1.67 中仍然相同

于 2013-06-25T17:14:39.803 回答