gpt4 book ai didi

multithreading - 我如何使用 boost thread futures 的向量?

转载 作者:行者123 更新时间:2023-12-03 13:15:07 25 4
gpt4 key购买 nike

如何使用线程 future 向量从一组线程中获取返回值?这应该工作吗?如果没有,我该如何调整它?

int calculate_the_answer_to_life_the_universe_and_everything()
{
return 42;
}

vector<packaged_task<int> > tasks;
vector<unique_future<int> > futures;
for (int i=0; i < 4; ++i)
{
tasks.push_back(packaged_task<int>(calculate_the_answer_to_life_the_universe_and_everything));
futures.push_back(tasks.back().get_future());
thread task(tasks.back());
}

boost::wait_for_all(futures.begin(), futures.end());

最佳答案

这段代码无法编译,因为打包任务不可复制。

根据问题陈述,您只需要一个 future 向量,为什么还要尝试存储 packaged_tasks?

#include <boost/thread.hpp>
#include <iostream>
#include <vector>
int the_answer()
{
return 42;
}
int main()
{

std::vector<boost::unique_future<int> > futures;
for (int i=0; i < 4; ++i)
{
boost::packaged_task<int> pt(the_answer);
futures.push_back(pt.get_future());
boost::thread task(std::move(pt));
}
boost::wait_for_all(futures.begin(), futures.end());

for(size_t n=0; n<futures.size(); ++n)
std::cout << futures[n].get() << ' ';
std::cout << '\n';
}

关于multithreading - 我如何使用 boost thread futures 的向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6833978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com