入れ子にも対応 さらに、ブロックによる並列化を入れ子にすることもできる。下のリストは、printfによる出力部分だけをdispatch_main_queueの戻り値で与えられたキューで実行、つまりは main関数と同じコンテクストで実行するというものだ。 出力結果を見ると、タスクそのものを実行したスレッドと、printfを実行したスレッドが異なる。そして出力はシリアライズされつつも、同じスレッドで実行しているのが分かる。 並列化したくない部分やmain関数のコンテクストで実行しないと困る部分は、dispatch_main_queueを使ったり、あるいは自分で並列度1(常にシリアライズされて実行される)のキューを作成してそこに必要なブロックだけを登録すればいい。あとはGCDが適切に対応してくれる。 なお、今回はGCDの並列化のサンプルのため、ループの中にdispatch_asyncやdisp