序言


スレッドは、単一のアプリケーション内で複数のコードパスを同時に実行できるようにするいくつかの技術の 1 つです。オペレーションオブジェクトや Grand Central Dispatch (GCD) などの新しいテクノロジーは、並行処理を実装するためのより現代的で効率的なインフラストラクチャを提供しますが、OS X と iOS もスレッドの作成と管理のためのインタフェースを提供します。


この文書では、OS X で利用可能なスレッドパッケージについて紹介し、それらの使い方を示します。この文書では、アプリケーション内のマルチスレッドコードのスレッド化と同期化をサポートするために提供される関連技術についても説明します。


重要: 新しいアプリケーションを開発している場合は、並行処理を実装するための代替 OS X の技術を調べることをお勧めします。特に、スレッド化されたアプリケーションを実装するために必要な設計手法にあなたが精通していない場合は、これが当てはまります。これらの代替テクノロジーは、実行の同時パスを実装するために必要な作業量を簡素化し、従来のスレッドよりもはるかに優れたパフォーマンスを提供します。これらのテクノロジーの詳細については、並行処理プログラミングガイド を参照してください。


この文書の構成


この文書には、以下の章と付録があります。



以下も見よ


スレッドの代替方法については、並行処理プログラミングガイド を参照してください。


この文書では、POSIX スレッド API の使用方法を簡単に説明しています。使用可能な POSIX スレッドルーチンの詳細については、pthread のマニュアルページを参照してください。POSIX スレッドとその使用方法の詳細については、David R. Butenhof の POSIX スレッドによるプログラミング を参照してください。


次の章





目次
Xcode 10 の新機能

  • 序言
  • この文書の構成
    以下も見よ
  • スレッドプログラミングについて
  • スレッドとは何か?
    スレッドの用語集
    スレッドの代替
  • スレッドのサポート
  • スレッドパッケージ
    実行ループ
    同期ツール
    スレッド間通信
  • デザインのヒント
  • スレッドを明示的に作成しない
    スレッドを合理的にビジー状態に保つ
    共有データ構造を避ける
    スレッドとユーザーインターフェイス
    終了時のスレッド動作に注意
    例外処理
    スレッドをきれいに終了
    ライブラリでのスレッドの安全性
  • スレッド管理
  • スレッドのコスト
  • スレッドの作成
  • NSThread の使用
    POSTIX スレッドの使用
    NSObject を使ってスレッドを生成
    POSIX スレッドを Cocoa アプリで使用
    Cocoa フレームワークの保護
    POSIX と Cocoa のロックの混在
  • スレッド属性の構成
  • スレッドのスタックサイズの構成
    スレッドローカルな格納の構成
    スレッドの切り離された状態の設定
    スレッドの優先度の設定
  • スレッドのエントリルーチンの作成
  • 自動開放プールの作成
    例外ハンドラの設定
    実行ループの設定
    スレッドの終了
  • 実行ループ
  • 実行ループの解剖学
    実行ループモード
    入力ソース
    ポートを基本としたソース
    カスタム入力ソース
    セレクターソースを Cocoa で実行
    タイマーソース
    実行ループ監視者
    イベントの実行ループシーケンス
  • 実行ループをいつ使用すべきか?
  • 実行ループオブジェクトの使用
  • 実行ループオブジェクトの取得
    実行ループの構成
    実行ループの開始
    実行ループの終了
    スレッドの安全性と実行ループオブジェクト
  • 実行ループソースの構成
  • カスタム入力ソースの定義
    入力ソースの定義
    実行ループへの入力ソースのインストール
    入力ソースのクライアントとの調整
    入力ソースへの信号
    タイマーソースの構成
    ポートを基本とした入力ソースの構成
    NSMachPort オブジェクトの構成
    NSMessagePort オブジェクトの構成
    Core Foundation でのポートを基本とした入力ソースの構成
  • 同期化
  • 同期ツール
    アトミック (微少) な操作
    メモリーバリアと揮発性変数
    ロック(Locks)
    条件
    セレクタルーチンの実行
    同期コストとパフォーマンス
    スレッドの安全性と信号
  • スレッドセーフな設計のヒント
  • 同期を一切避ける
    同期の限界を理解
    コードの正しさへの脅威に気づく
    デッドロックとライブロックを監視
    揮発性変数の正しい使用
    アトミック (微少) 操作の使用
  • ロック (Locks) の使用
  • POSIX mutex ロックの使用
    NSLock クラスの使用
    @synchronized 指令の使用
    NSRecursiveLock オブジェクトの使用
    NSConditionLock オブジェクトの使用
    NSDistributedLock オブジェクトの使用
  • 条件の使用
  • NSCondition クラスの使用
    POSIX 条件の使用
  • スレッドの安全性の要約
  • Cocoa
  • Foundation フレームワークのスレッドの安全性
    スレッドセーフなクラスと関数
    スレッドセーフでないクラス
    メインスレッドのみのクラス
    可変に対する不変
    リエントラント
    クラスの初期化
    自動解放プール
    実行ループ
    Application Kit フレームワークのスレッドの安全性
    スレッドセーフでないクラス
    メインスレッドだけのクラス
    Window の制限事項
    イベント処理の制限事項
    描画の制限事項
    NSView の制限事項
    NSGraphicsContext の制限事項
    NSImage の制限事項
    Core Data フレームワーク
  • Core Foundation
  • 用語集
  • 文書更新履歴












  • トップへ(Thread Program Guide)