私は1つのメイングループを実行し、別のスレッドで別の2つのバックグラウンドタスクを実行し、待機してから、以下に示す一般ブロックで変更された値を返すサンプル関数を次に示します。以下に示すのは、これを行う方法の私の推測です。これらのブロックをすべて1つのブロックで実行すると機能します。ブロックを分割すると失敗します。誰かが同様のことを達成する方法の例を持っていますか?あなたの助けを前にありがとう。グランドセントラルディスパッチ。 1つの非同期グループを実行し、待機してから別のグループを実行し、もう一度待機してから終了しますか?
-(NSString *)sampleFunction:(NSString*)inputString
{
__block NSString *returnString;
dispatch_group_t mainGroup = dispatch_group_create();
dispatch_group_t otherGroup = dispatch_group_create();
void (^firstBlock)(void) = ^(void)
{
...
};
void (^secondBlock)(void) = ^(void)
{
...
};
void (^thirdBlock)(void) = ^(void)
{
...
};
dispatch_group_async(oneGroup, dispatch_get_global_queue(0, 0), firstBlock);
dispatch_group_wait(oneGroup, sizeof(int));
dispatch_group_async(otherGroup, dispatch_get_global_queue(0, 0), secondBlock);
dispatch_group_async(otherGroup, dispatch_get_global_queue(0, 0), thirdBlock);
dispatch_group_wait(otherGroup, sizeof(int));
dispatch_release(userGroup);
dispatch_release(otherGroup);
return returnString;
}
大きな画像を説明してください。何を達成しようとしていますか?私は待っている部分を取得しません。 – DarkDust
そしてなぜ 'sizeof(int)'を 'dispatch_group_wait'に引数として渡していますか?あなたは 'DISPATCH_TIME_FOREVER'を知っていますか? – DarkDust
なぜ、1つのスレッドですべてのコードを実行するだけではないのですか?スレッドが完了するのを待っている場合は、スレッドを持っていても何がポイントですか? –