如何从升压线程获得返回值

How do I get return values from a boost thread?

本文关键字:返回值 线程      更新时间:2023-10-16

我想做一些简单的事情,例如

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

这会引发错误。无法转换int&到int。必须有一种简单的方法来获得boost的返回值,如果没有人对为什么有体面的解释?

boost::thread构造函数使用 boost::bind。boost :: bind通过副本默认值进行参数,所以

b = a;

从Main修改b的副本。您需要使用boost::ref()b的引用传递到thread

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