Grand Central Dispatchを使用してタスクを完了するための特定の順序を強制しようとしていますが、正しい方法を理解するのに少し問題があります。私は、次の方法でグループを使用してみました:GCDを使用して状態を待つ
初期化:待機する必要が
startup = dispatch_group_create();
タスク:私は待つ必要がある
//Don't want to wait on the main thread, so dispatch async to a concurrent queue
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0L),^{
//Wait until we're finished starting up
dispatch_group_wait(startup,DISPATCH_TIME_FOREVER);
//Now we can do this stuff back on the main queue
dispatch_async(dispatch_get_main_queue(),^{
//Do work
});
});
が仕事:
dispatch_group_async(startup,dispatch_get_main_queue(),^{ // work });
私のアプリの性質上、待つ必要がある作業は、待つ必要のある作業の前に行うことができます。私が本当に望むのは、条件が完了した時点でそれが完了し、将来のすべてのスレッドがそれらのことを行うことができるという条件を待つ能力です。 GCDにはこれがありますか?