Como verificar se uma tarefa std :: async está concluída?

No meu aplicativo gráfico, quero gerar um lote de malhas em outro segmento. Portanto, assíncrono chamo a função de membro usandostd::async.

task = async(launch::async, &Class::Meshing, this, Data(...));

No meu loop de atualização, tento verificar se o segmento está pronto. Se sim, enviarei a malha para a placa de vídeo e inicie o próximo tópico. Se não, vou pular essas operações.

#include <future>
using namespace std;

class Class
{
public:
    void Update()
    {
        if(task.finished()) // this method does not exist
        {
            Data data = task.get();
            // ...
            task = async(launch::async, &Class::Meshing, this, Data(/* ... */));
        }
    }

private:
    struct Data
    {
        // ...
    };
    future<Data> task;
    Data Meshing(Data data)
    {
        // ...
    }
};

Como posso verificar se o encadeamento assincrônico terminou sem interromper a função de atualização?

questionAnswers(2)

yourAnswerToTheQuestion