グラフィック アプリケーションで、別のスレッドでバッチ メッシュを生成したいと考えています。したがって、を使用してメンバー関数を非同期で呼び出しますstd::async
。
task = async(launch::async, &Class::Meshing, this, Data(...));
私の更新ループでは、スレッドの準備ができているかどうかを確認しようとしています。はいの場合、メッシュをビデオ カードに送信し、次のスレッドを開始します。そうでない場合は、これらの操作をスキップします。
#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)
{
// ...
}
};
非同期スレッドが更新機能でスタックせずに終了したかどうかを確認するにはどうすればよいですか?