我正在使用像这样的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的单位化值。我做错了什么?
答案 0 :(得分:6)
这是因为alarm
- 对象是copied when passed to the thread
constructor。解决方案是将其包装在boost::ref
:
boost::thread thrd(boost::ref(alarm));