我试图将方法作为新线程调用,以及将方法返回的值分配给变量。
EG:
int numObjects = thread t7(methodName(parameter));
我该怎么做?
我确定我错过了一些简单的事情,但这让我很难过。
提前致谢
答案 0 :(得分:5)
您需要将std::future
与std::async
结合使用。
std::future<int> fut = std::async(methondname, parameter);
// do something
// will wait for the result to become available
std::cout << fut.get() << std::endl;
我还建议您阅读我链接到的std::async
文档,因为有不同的启动策略,例如:它是真的在单独的线程中运行还是懒惰执行。
另一种可能性是简单地将输出参数(通过std::ref
)与std::thread
一起使用,然后您必须手动加入并且也不会获得继承到{{的异常安全性1}}。所以你最好坚持std::async
。