Mac OS X以外のプラットフォーム広がる可能性も
Snow Leopardの並列処理フレームワーク「GCD」がOSSに
2009/09/14
米アップルは9月10日、最新バージョンのMac OS X(Snow Leopard)に搭載されるマルチスレッドプログラミング用フレームワーク「Grand Central Dispatch」(GCD)をApacheライセンス2.0の下、オープンソースで公開した。オープンソース版は「libdispatch」と名付けられたライブラリの形で公開されており、LinuxなどほかのUnix系OSへの移植が進むと期待できる。GCDをサポートするには、C言語への独自拡張である以下のようなクロージャ風のブロック構文に対応したコンパイラが必要なほか、OS側の最適化も必要となる。
my_block = ^(void){ printf("hello world\n"); };
Mac OS X側に含まれるGCD向け最適化のコードは、「xnuプロジェクト」で見ることができる。
マルチコア化が進むに従ってマルチスレッドプログラミングの重要性は増しているが、C/C++を使ったマルチスレッドプログラミングは標準では低水準のAPIしかなく、スレッドプールを用いたオーバーヘッドの小さな処理の実装はプログラマに任されいる。GCDでは、こうした処理を抽象化して最適化している。プログラマは、実行タスクとしてブロックや関数をキューに追加していくだけでよく、GCDが1つずつ取り出して処理を行う。キューはあらかじめシステムに数種類用意されているほか、ユーザー定義も可能という。
通常のスレッドプログラミングでは、スレッドを生成して、何かの処理を行うまでに数百インストラクションの実行が必要だが、アップルの説明(PDF)によれば、GCDではキューへのタスク追加が15インストラクションで済むという。
GCDがMac OS Xでだけ使えるフレームワークであれば、利用の広がりは期待できなかったが、オープンソースとなることで、ほかのUNIX系プラットフォームへの移植が進む可能性が出てきたと言えそうだ。
関連リンク
関連記事
情報をお寄せください:
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|
キャリアアップ
- - PR -
転職/派遣情報を探す
「ITmedia マーケティング」新着記事
CMOはなぜ短命? なぜ軽視される? いま向き合うべき3つの厳しい現実
プロダクト分析ツールを提供するAmplitudeのCMOが、2025年のマーケティングリーダーに課...
トラフィック1300%増、生成AIがEコマースを変える
アドビは、2024年のホリデーシーズンのオンラインショッピングデータを公開した。
「ドメインリスト貸し」は何がマズい? サイトの評判の不正使用について解説
「サイトの評判の不正使用」について理解し、正しい対策が取れるにしましょう。