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?