从未来对象数组std::vector中检索值
retrieving values from array of future objects, std::vector
我收到一条错误消息,我不知道如何响应。我试图从未来对象的向量中检索值,然后输出它们,但我在确认是否检索值时遇到了问题。
代码:
std::vector<std::future<double>> threadResults;
int numThreads = 4;
double output;
for (int j=0; j<numThreads; j++) {
threadResults.push_back(std::async(launch::async, someCalculation, array1, array2, dimension));
}
for (auto& fut : threadResults) {
auto output = fut.get();
}
我是std::vector
的新手,所以我不确定如何将get()
与之结合使用。一些研究让我陷入了循环的低谷,我不确定它是否有效。如果有人看到任何明显的错误,请告诉我,但我主要关心的是如何正确地将std::vector
与future
类一起使用。
这是我的错误信息:
/tmp/ccQ19btT.o: In function `std::thread::thread<std::__future_base::_Async_state_impl<std::_Bind_simple<double (*(double*, double*, double*, int))(double*, double*, double*, int)>, double>::_Async_state_impl(std::_Bind_simple<double (*(double*, double*, double*, int))(double*, double*, double*, int)>&&)::{lambda()#1}>(std::__future_base::_Async_state_impl<std::_Bind_simple<double (*(double*, double*, double*, int))(double*, double*, double*, int)>, double>::_Async_state_impl(std::_Bind_simple<double (*(double*, double*, double*, int))(double*, double*, double*, int)>&&)::{lambda()#1}&&)':
nonOptimizedNonThreaded.cpp:(.text._ZNSt6threadC2IZNSt13__future_base17_Async_state_implISt12_Bind_simpleIFPFdPdS4_S4_iES4_S4_S4_iEEdEC4EOS8_EUlvE_IEEEOT_DpOT0_[_ZNSt6threadC5IZNSt13__future_base17_Async_state_implISt12_Bind_simpleIFPFdPdS4_S4_iES4_S4_S4_iEEdEC4EOS8_EUlvE_IEEEOT_DpOT0_]+0x2d): undefined reference to `pthread_create'
collect2: error: ld returned 1 exit status
很抱歉长的水平滚动,让我知道是否有更好的格式。
以下是我的编译方式:
g++ threadingVector.cpp -o threadingVector -std=c++0x
如果这不是正确的答案,请告诉我,我会删除它以避免混淆其他人,但我昨天遇到了完全相同的问题,在编译器args中添加-phread成功了。尝试:
g++ -pthread threadingVector.cpp -o threadingVector -std=c++0x
在不同的体系结构上,std::thread&该公司将多线程的一些底层实现留给环境,而在linux上完成线程实现的一个流行库将是pthread。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中用vector填充一个简单的动态数组
- vector.resize()中的分配错误
- 使用std::vector的OpenCL矩阵乘法
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 在某些循环内使用vector.push_back时出现分段错误
- 当vector是tje全局变量时,c++中vector的内存管理
- std::vector的包装器,使数组的结构看起来像结构的数组
- 使用VerQueryValue检索应用程序的文件描述
- 为什么(-1)%vector::size()总是返回0
- 在C++中将类(带有Vector成员)保存为二进制文件
- 是否可以从格式字符串中检索"width"
- 编译器如何区分std::vector的构造函数
- 将 int 数组转换为 std::vector<int*>
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 在std::vector上存储带有模板的类实例
- 如何在文件中节省空间地存储和检索 std::vector<int> 值
- 如何使用 std::map 在 c++ 中检索 std::vector<int>?
- 从 std::vector<cv::P oint>::const_iterator 中检索值
- 从未来对象数组std::vector中检索值