如何从Boost线程获取返回值?

时间:2019-03-08 07:43:50

标签: c++ boost

我想做一些简单的事情

void returnVal(int a, int &b)
{
    b = a;
}

int main()
{
    int b = 0;
    boost::thread t(returnVal,1,b);
    t.join();
}

这将引发错误。无法将int&转换为int。必须有一种简单的方法来获取boost中的返回值,如果没有,那么没有人对原因有一个恰当的解释?

1 个答案:

答案 0 :(得分:3)

boost::thread构造函数使用boost::bind。 boost :: bind默认通过复制获取参数,所以

b = a;

修改来自main的b的副本。您需要使用boost::ref()将对b的引用传递到thread中:

boost::thread t(returnVal,1,boost::ref(b));