gpt4 book ai didi

c++ - boost::mutex::timed_lock 不在 Linux 上

转载 作者:太空狗 更新时间:2023-10-29 21:44:25 25 4
gpt4 key购买 nike

我有一个使用 VS2010 开发的应用程序,它使用 Boost.Thread 1.48。

目前我正在尝试将应用程序移植到 Linux(在 Debian 7 上运行)。

当我尝试使用 GCC 4.6 或 clang 编译它时,出现以下错误

error: ‘class boost::mutex’ has no member named ‘timed_lock’

是否有任何我必须设置的预处理器定义或编译器标志?

编辑:好的,我发现了问题。我使用了以下内容:

我的文件.h:

boost::mutex myMutex;

我的文件.cpp

if(myMutex.timed_lock(boost::posix_time::millisec(10000)))
{
// Do stuff
// ...
// ...

myMutex.unlock();
return true;
}

myMutex.unlock();
return false;

这适用于 VS2008/2010。在 Linux 下,我必须将 header 更改为:

boost::timed_mutex myMutex;

我还是不太清楚,这是什么原因。

最佳答案

在 Windows 平台上,boost::mutex 和 boost::timed_mutex 共享相同的实现。这是一个实现细节。

如果你想使用 timed_lock() 作为 Boost.Thread 文档,你应该使用 boost::time_mutex。

http://www.boost.org/doc/libs/1_55_0/doc/html/thread/synchronization.html#thread.synchronization.mutex_types.timed_mutex

关于c++ - boost::mutex::timed_lock 不在 Linux 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20119838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com