0
これは、タスクが完了したかどうかをテストする正しい方法ですか?Windows PPL(C++):タスクが完了したかどうかをテストする正しい方法ですか?
const concurrency::task<void> voidTask;
if (voidTask != m_getInfoAsync)
{
if (!m_getInfoAsync.is_done())
{
return 0;
}
}
if (voidTask != m_getRangeAsync)
{
if (!m_getRangeAsync.is_done())
{
return 0;
}
}
非同期API(XboxLive)を同期コードで使用しています(これについては何もできません)。これは、新しい操作を開始する前に以前の操作が完了したかどうかをテストする関数の一部です。私は基本的に並行性のRTについて知りませんでした(私はそれについて私が読んでいる)私の最初の解決策は、非同期操作が開始される前に変数を設定し、変数をfalseに設定することでした。 – Zingam
@ジンガム悪い考え。それらが完了しているかどうか尋ねるのではなく、これらのタスクを連鎖させる –
どうすればいいですか?私はインターフェイス(仮想関数)getInfoAsync()、isAsyncComplete()、getRangeAsync()を実装しています。その場合の非同期は、これらのタスクが別のスレッドで実行されていることを意味します。それらはトリガーシステムによって呼び出されます。これらのインタフェースは、いくつかの異なるプラットフォームと異なるAPI用にすでに実装されています。とにかく私はあなたのアドバイスを心に留めておきます。 – Zingam