Dispatch Queue

http://developer.apple.com/mac/library/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html#//apple_ref/doc/uid/TP40008091-CH102-SW1

  • C言語にブロックを導入した。プロックは関数ポインタと異なり、関数の中でも定義可能。(関数と異なるスコープを持つ)
  • 並列処理用のキューのライブラリが用意された。
  • キューを生成して、タスクとしてブロックを詰め込んで、コールバックも与えて、キューを起動する。
  • キューの特性に応じて、タスクがマルチCPU上で適当にスケジュールされて実行され、キューが空になるとコールバックが呼ばれる。

並列性の高い部分をタスクに分解してキューを作り、コールバックに継続を渡せば、並列プログラムの出来上がり。
スレッドの数とか管理する必要はなく、CPUの数に応じたスケーラビリティも持ちます。
わかりやすい。
相互にプロセス間通信するスレッドの方が本格的で、Erlangとかはそちらの本道を行ってそうな気がしましたが、それだけにウィキペディア見ただけでも敷居が高く感じました。
上のモデルだと、並列性の高い計算(独立した計算)は素直に書き直せるので、移行しやすく実用的ですね。
あまりに素直で昔からある技術のような気がしますが、元技術はなんなのでしょうね。