¿Cómo comprobar si una tarea std :: async ha finalizado?
En mi aplicación de gráficos quiero generar un lote de mallas en otro hilo. Por eso llamo asincronamente a la función miembro usandostd::async
.
task = async(launch::async, &Class::Meshing, this, Data(...));
En mi ciclo de actualización, trato de verificar si el hilo está listo. En caso afirmativo, enviaré la malla a la tarjeta de video e iniciaré la siguiente secuencia. Si no, me saltaré estas operaciones.
#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)
{
// ...
}
};
¿Cómo puedo verificar si el subproceso de asincronía terminó sin apilarse en la función de actualización?