我想要做的是從每個線程返回一個值。但是,它有這個例外信息。C++多線程返回值使用promise,future?
libc++abi.dylib: terminating with uncaught exception of type std::__1::future_error: Operation not permitted on an object without an associated state.
代碼如下所示。
vector<thread> t;
promise<class_name> promises;
vector<future<class_name>> futures;
for(int i = 0; i < NumberOfThreads; i++)
{
futures.push_back(promises.get_future());
t.push_back(thread(MyFunction ,i , pointList, std::move(promises)));
}
和MyFunction看起來像這樣。
void MyFunction(int index, const vector<Point>& pointList, promise<class_name>&& p)
{
....
p.set_value(classObj);
}
如果我使用一個線程,那麼它工作正常,沒有例外消息。
任何想法來解決這個問題?