相关疑难解决方法(0)

如何将期货放入集装箱?

我试图将异步生成的期货放在向量中,所以我不必做类似的事情:

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)

c++ multithreading c++11

11
推荐指数
2
解决办法
2645
查看次数

标签 统计

c++ ×1

c++11 ×1

multithreading ×1