使用boost线程从特定于线程的代码返回值

时间:2011-03-15 17:17:20

标签: c++ boost

我正在使用像这样的C ++ boost库线程

MyThread alarm();
boost::thread thrd(alarm);
if (thrd.timed_join(boost::posix_time::seconds(timeout)))
{
    cout << alarm.modified_var << endl;
}
else
{
    cout << alarm.modified_var << endl;
}

modified_var在MyThread类中更改,但是当我在同步点之后打印它时,我得到modified_var的单位化值。我做错了什么?

1 个答案:

答案 0 :(得分:6)

这是因为alarm - 对象是copied when passed to the thread constructor。解决方案是将其包装在boost::ref

boost::thread thrd(boost::ref(alarm));