【发布时间】:2011-07-01 01:23:55
【问题描述】:
我刚刚安装了 boost 库,我正在尝试使用多线程。我完全从 boost 库示例中复制了这个示例。我收到错误消息:
undefined reference boost::thread::join()
这是代码,
#include <boost/thread.hpp>
#include <boost/thread/xtime.hpp>
#include <iostream>
struct thread_alarm
{
thread_alarm(int secs) : m_secs(secs) { }
void operator()()
{
boost::xtime xt;
boost::xtime_get(&xt, boost::TIME_UTC);
xt.sec += m_secs;
boost::thread::sleep(xt);
std::cout << "alarm sounded..." << std::endl;
}
int m_secs;
};
int main(int argc, char* argv[])
{
int secs = 5;
std::cout << "setting alarm for 5 seconds..." << std::endl;
thread_alarm alarm(secs);
boost::thread thrd(alarm);
thrd.join();
}
【问题讨论】:
-
您的错误消息的开头是否显示“ld”?听起来您只是还没有构建 Boost。 (我相信
boost::thread是需要首先构建的库之一)。或者,使用std::thread代替,因为 GCC 支持 C++0x 功能 IIRC。 -
线程不是std的成员
-
并且没有构建提升,我认为可能是一个问题。但是@boost.org/doc/libs/1_46_1/more/getting_started/… 它说必须构建线程,然后在下一页boost.org/doc/libs/1_46_1/doc/html/thread.html 它说我只需要包含主头文件。所以我不知道该怎么办。
-
在 C++0x 中,线程 是
std的成员。 (您可能需要指定--std=c++0x才能在 G++ 中获取它)
标签: c++ ubuntu boost-thread