Snow LeopardにGrand Central Dispatchが登場したわけ

海上忍
2009-09-01 14:01:01
  • このエントリーをはてなブックマークに追加

 Snow Leopardには、新たに「Grand Central Dispatch」(GCD)が採用された。マルチコア時代に備えたマルチスレッド実行環境および開発基盤であり、高パフォーマンスな並列化プログラムを迅速に記述できることが特徴だ。

 以前のシステムでCocoaアプリをマルチコア対応にするときには、NSThreadを利用していた(pThreadもあるが)。しかし、OPENSTEPの時代から存在するNSThreadにはスレッドを同期させる機能がなく、NSLockなどを駆使しつつ自力でコーディングする必要があった。Leopardのときには、スレッドの生成から同期、終了に至るまでの処理を自動化するNSOperationが追加されたものの、Appleは基盤部分に改良の余地ありと考えたらしい。

 それがGCDで、その重要なパートである「Block」と「Queue」だ。BlockはCとC++、Objective-Cに対する拡張(AppleがC1Xへ提案中、リンク先はPDF)であり、Blockとして定義されたコードはスレッドプールであるQueueに蓄積、あとはシステム側のランタイム(libdispatch)が臨機応変にBlockを並列処理していく仕組み。スレッド管理の手間がかからないうえ、わずか15の命令でBlockをQueueへ登録できるという高速さも売りといえる。

 一方、Appleは開発者に対し、(Cocoaを使うのならば)NSOperationを使う方がラクだよ、とGCDのリファレンスで説明している。次回は、その理由と考えられるlibdispatchについて考えてみたい。

Xcode Tools付属の「Instruments」(画像をクリックすると拡大します) Xcode Tools付属の「Instruments」(画像をクリックすると拡大します)
  • 新着記事
  • 特集
  • ブログ
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]