目次
監訳者まえがき
まえがき
1章 はじめに
1.1 マルチスレッドプログラミングとは何か
1.2 なぜマルチスレッドプログラムを書く(スレッドを使用する)のか
1.3 スレッドを使用すべきでない場合
1.4 マルチスレッドプログラミングへの移行
2章 スレッドのスケジューリングと基本概念
2.1 スレッドのスケジューリング
2.2 マルチスレッドプログラミングの概念
3章 プロセスとスレッドAPI
3.1 カーネルオブジェクト
3.2 プロセス
3.3 スレッドのメカニズム
3.4 プロセスの生存期間の問題に立ち戻る
4章 スレッド同期ツール
4.1 インターロックされた関数
4.2 クリティカルセクション
4.3 WaitForSingleObjectとWaitForMultipleObjects
4.4 ミューテックス
4.5 セマフォ
4.6 イベント
5章 スレッド間通信
5.1 共有メモリとメモリマップファイル
5.2 匿名パイプ
5.3 スレッドとメッセージ処理
5.4 MsgWaitForMultipleObjects
6章 Mcl:マルチスレッドプログラミング用C++クラスライブラリ
6.1 CMclライブラリクラスの階層
6.2 CMclクラスライブラリの実装
7章 Mcl:高レベルクラス
7.1 CMclSharedMemory
7.2 CMclLinkedList
7.3 CMclMailbox
7.4 CMclMonitor
7.5 CMclクラスライブラリのためのmakefile
8章 基本スレッド同期
8.1 リソースの相互排除
8.2 単一入場ゲート
8.3 警告可能待機
8.4 限定されたリソースに対する競合
8.5 生産者と消費者のバリエーション
9章 高度なカプセル化技術
9.1 オブジェクトとスレッドの同期
9.2 スレッド局所記憶
10章 上級スレッド管理技術
10.1 オンデマンドスレッド
10.2 スレッドプール
11章 マルチスレッドプログラムにおけるDLL
11.1 32ビットDLLの解剖学的構造と意味論
11.2 DllMain関数
11.3 関数とデータのエクスポート
11.4 関数とデータのインポート
11.5 思慮深いDLLの実装
11.6 DLL内の静的およびグローバルC++オブジェクト
12章 マルチスレッドユーザインタフェースとMFC
12.1 Win32 ウィンドウシステムの基礎
12.2 マルチスレッドプログラムとユーザインタフェース
12.3 なぜMFCを使用するか
12.4 マルチスレッドプログラムにおけるMFCの使用
12.5 MFCプログラムにおけるMclの使用
12.6 Mcl4Mfcクラスライブラリ
13章 マルチスレッドGUIの基本設計
13.1 3つの基本的デザインパターン
13.2 自律アニメーションコントロール
13.3 食事をする哲学者の問題のアニメートされたシミュレーション
13.4 自律的なダイアログボックス
14章 構造化例外処理
14.1 構造化例外処理の概要
14.2 構造化例外処理の一般的使用
14.3 例外処理の戦略
14.4 C++と構造化例外処理の併用
15章 マルチスレッドプログラムのデバッグ
15.1 並行思考
15.2 “HeisenBUG”の不確定性原理
15.3 コードの段階的実行
15.4 Visual C++のスレッドおよびコールスタックウィンドウの使用
15.5 どれがプライマリスレッドか?
15.6 どのスレッドをデバッグしているのかを知る
15.7 段階的実行の間のコンテキストスイッチを警戒する
15.8 時間はデバッガで静止していない
15.9 どのスレッドがどのウィンドウを所有するのかを知る
15.10 OutputDebugStringの使用
15.11 メモリを抹消する
あとがき
付 録
付録A Mcl C++クラスライブラリリファレンス
付録B Mcl4Mfc C++クラスライブラリリファレンス
索 引
|