我试图将异步生成的期货放在向量中,所以我不必做类似的事情:
auto f1 = async(....);
auto f2 = async(....);
...
f1.get();
f2.get();
...
Run Code Online (Sandbox Code Playgroud)
我用这段代码收到的编译错误是"调用'std :: _ 1 :: future'的删除构造函数".谁能帮助我如何正确地做到这一点.不确定将未来复制到向量中.
void AudioAnalyzer::retrieve()
{
deque<shared_ptr<AudioAnalysis>>tempData(data);
vector<future<void>> futures;
for (int i = 0; i < NUM_THREADS; ++i)
{
auto f = async(bind(&AudioAnalyzer::analysisThread, this, _1), ref(tempData));
futures.push_back(f);
}
for (auto& f : futures)
{
f.get();
}
}
void AudioAnalyzer::analysisThread(deque<shared_ptr<AudioAnalysis>>& aq )
{
while (true)
{
m.lock();
if (aq.size() == 0)
{
m.unlock();
break;
}
auto aa = aq.front();
aq.pop_front();
m.unlock();
if (false) //testing
{ …Run Code Online (Sandbox Code Playgroud)