Я получаю сообщение об ошибке Я понятия не имею, как реагировать. Я пытаюсь получить значения из вектора будущих объектов, а затем вывести их, но у меня возникают проблемы с подтверждением того, извлекаю ли значения.получение значений из массива будущих объектов, 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
Я видел этот вопрос раньше. –
Может иметь какое-то отношение к этой части ошибки: неопределенная ссылка на 'pthread_create '. –