c++ - 在新线程中调用方法并将返回值分配给变量

标签 c++ multithreading c++11

我正在尝试将方法作为新线程调用,并将该方法返回的值分配给变量。

EG:

int numObjects = thread t7(methodName(parameter));

我该如何去做呢?

我确信我错过了一些简单的东西,但这让我很困惑。

提前致谢

最佳答案

您需要使用 std::futurestd::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 一起使用,但是您必须手动加入并且也不要无法获得继承于 std::async 的异常安全性。所以你最好坚持使用std::async

关于c++ - 在新线程中调用方法并将返回值分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25259519/

相关文章:

c++ - 使用包中工作空间导入的线性代数库Eigen

c++ - LMDB Seek(移动光标)而不读取

java - 从同一台机器访问最快的 NoSql 数据库是哪个?

java - 线程失去锁并给另一个线程执行的机会

c++ - 自己的 AddRef 和 Release for Boost shared_ptr

c++ - 如何实现奖品具有相对获得机会比例的抽奖系统?

java - JNI : Direct buffer reading & writing

multithreading - 如何在保持纵横比的同时在 hls 输出上使用刻录文本构建 ffmpeg

c++ - 总结两个 boost::accumulator_set 实例

c++ - 当 template<typename, value...> 时强制特定重载