我有一个使用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。