Dispatch Queue に追加された複数の処理がすべて完了するまで待ちたい場合があるかと思います。そのような場合に Dispatch Group を用います。
Dispatch::Group.new
Dispatch Group を生成します。
- new -> Group
- [RETURN]
- 生成した Dispatch Group のインスタンスを返します。
- [RETURN]
Dispatch::Group#notify
Dispatch Queue のタスクがすべて完了すると実行する block を Dispatch Queue に追加します。GCD API の dispatch_group_notify
に相当します。
- notify(queue) { … }
- [PARAM] queue:
- block を追加する Dispatch Queue を指定します。
- [PARAM] queue:
1 2 3 4 5 |
|
Dispatch::Group#on_completion
Dispatch::Group#notify の別名です。
Dispatch::Group#wait
Dispatch Group に所属しているDispatch Queue のタスクがすべて完了するのを待ちます。GCD API の dispatch_group_wait
に相当します。
- wait(timeout = nil) -> bool
- [PARAM] timeout:
- タイムアウト時間を指定します。省略された場合には Dispatch::TIME_FOREVER が指定されたのと同じになります。
- [RETURN]
- すべてのタスクが完了していれば true、タイムアウトにより完了していないタスクがあれば false を返します。
- [PARAM] timeout:
1 2 3 4 5 6 7 |
|