我正在使用像这样的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;
}
Run Code Online (Sandbox Code Playgroud)
modified_var在MyThread类中更改,但是当我在同步点之后打印它时,我得到modified_var的单位化值.我究竟做错了什么?
这是因为alarm-object 在传递给thread构造函数时被复制.解决方案是将其包装在boost::ref:
boost::thread thrd(boost::ref(alarm));
Run Code Online (Sandbox Code Playgroud)