boost :: mutex :: timed_lock不在Linux上

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

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

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

error: 'class boost::mutex' has no member named 'timed_lock' 

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

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

myfile.h:

 boost::mutex myMutex; 

MYFILE.CPP

 if(myMutex.timed_lock(boost::posix_time::millisec(10000))) { // Do stuff // ... // ... myMutex.unlock(); return true; } myMutex.unlock(); return false; 

这适用于VS2008 / 2010。 在Linux下,我不得不把头改为:

 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