bool SDL_WaitAsyncIOResult(SDL_AsyncIOQueue *queue, SDL_AsyncIOOutcome *outcome, Sint32 timeoutMS);
| SDL_AsyncIOQueue * | queue | チェックするSDL_AsyncIOキュー |
| SDL_AsyncIOOutcome * | outcome | タスクの完了結果の代入先へのポインタ. NULL不可 |
| Sint32 | timeoutMS | ミリ秒単位の最大待ち時間. -1のとき無限に待つ |
この関数はキューのタスクが完了するまでスレッドを停止させる.
キューのタスクが完了すると, この関数は真を戻し, outcomeにタスクの詳細が設定される.
完了したタスクがない場合, この関数は偽を戻す.
タスクが完了すると, この関数はタスクの資源を解放しタスクへのポインタは無効になり, タスクはキューから取り除かれる.
同一のキューに対して複数のスレッドからこの関数を呼ぶことは安全である. 完了したタスクは1つのスレッドのみに伝えられる.
1つのタスクの完了を待つ複数のスレッドのブロックが解除されることがあるが, 実際にタスクを得たのは1つのスレッドだけのため, timeoutMSは最大待ち時間だが, この関数はそれよりも早く偽を戻すことがあるので注意すること.
この関数は, システムのエラーが発生した, またはOSが意図せず複数のスレッドでブロックを解除した, またはSDL_SignalAsyncIOQueue()が呼ばれて未完了のタスクのあるスレッドのブロックが解除されたとき偽を戻す.
タイムアウトで最大待ち時間を指定できるが, ポーリングではなく, タイムアウトを-1とすることで無制限に待ちSDL_SignalAsyncIOQueue()で待機中のスレッドのブロックを解除することもできる.