Pthreadsプログラミング

[cover photo]
TOPICS
発行年月日
PRINT LENGTH
328
ISBN
4-90090-066-4
原書
Pthreads Programming
FORMAT
Print
3,630円
この商品は品切れ再入荷未定です

これまで、UNIXでのマルチスレッドに対応したライブラリやAPIの実装は、ベンダーごとにまちまちで、プログラミング方法も統一されていませんでした。現在は、POSIXがPthreadsとして規定したライブラリが、業界標準として普及しています。本書は、このPthreadsライブラリを使ったマルチスレッドプログラムの設計、プログラミング、デバッグを、銀行のATMマシンの例題プログラムを設計、開発しながら解説します。

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

正誤表1(第2刷時修正)

Phreadsプログラミング 第2刷修正

viページ 12行め
<修正前> 「翻訳者まえがき」
<修正後> 「訳者まえがき」

viiiページ 4行め
<修正前>
数のが
<修正後>
数のユーザが


xiiページ
FTPセッション例を以下に変更
*【】は太字

<修正後>
%【ftp ftp.oreilly.com】
Connecting to ftp.oreilly.com
220 ProFTPD 1.2.5 Server (O'Reilly FTP Server) [tornado.east.ora.com]
USER(ftp.oreilly.com: (none)): 【anonymous】
331 Anonymous login ok, send your complete email address as your password.
Password: 【yourname@yourdomain】 自分のメールアドレスを入力
230-Welcome to the O'Reilly & Associates, Inc. FTP Archive.
    :
    :
230 Anonymous access granted, restrictions apply.
ftp>【cd /published/oreilly/phtread/
250 CWD command successful.
ftp>【binary】 重要!圧縮ファイルを転送する時は、バイナリ転送モードを指定しなければならない。
200 Type set to I.
ftp> 【get examples.tar.gz】
200 PORT command successful.
150 Opening BINARY mode data connection for examples.tar.gz
226 Transfer complete.
ftp> 【quit】
221 Goodbye.
%



xiiページ 2つめのコード
<修正前>
% gzcar
<修正後>
% gzcat

xiiページ 「書体について」の3つめの箇条書き
<修正前>
対話例において、がリテラル
<修正後>
対話例において、ユーザやプログラマがリテラル

6ページ 図1-3 仮想アドレス空間の最初のボックス
<修正前>
do_one_thing() i
<修正後>
do_another_thing() i


7ページ 「1.2」の見出しの次の行
<修正前>
 前の例のsampleプログラムに戻ろう。
<修正後>
 前の例のsimpleプログラムに戻ろう。

10ページ 2行め
<修正前>
Pthreadは、
<修正後>
Pthreadsは、

18ページ 最後の段落の最初の行
<修正前>
 マルチプロセス版のプログラム例1-4では、
<修正後>
 マルチプロセス版のプログラム例1-2では、

24ページ コード8行め
<修正前>
pthread_seld();
<修正後>
pthread_self();

27ページ 例1-9 5行め
<修正前>
if rtn = pthread_create
<修正後>
if (rtn = pthread_create

54ページ 下から5行め
<修正前>
(*worker_threadp);
<修正後>
(worker_threadp);

64ページ 例2-11 6行め
<修正前>
package_t *p=(package_t *)arg;
<修正後>
package_t *work_orderp=(package_t *)arg;

64ページ 例2-11 下から3行め
<修正前>
free(p);
<修正後>
free(work_orderp);


120ページ 下から5〜6行(空白行も含む)を削除
<削除行>
     worker_threadp = (pthread_t *)malloc(sizeof(pthread_t));

     tpool_add_work(atm_thread_pool, process_request, (void *)workorderp);


123ページ *箇条書きの4つめの2行め
<修正前>
_POSIX_THREAD_ATTR_PRIORITY_SCHEDULING
<修正後>
_POSIX_THREAD_PRIORITY_SCHEDULING

171ページ 例4-22 最終行
<修正前>
custom_sched_attr
<修正後>
&custom_sched_attr

224ページ *箇条書き1つめの1行め
<修正前>
カーネススレッド
<修正後>
カーネルスレッド

298ページ P の項目一行め
<修正前>pc
<修正後>PC
*大文字にする

299ページ P の項目の最後の2行
<修正前>
pthreadsの実装
pthreadsのスケジューリング
<修正後>
Pthreadsの実装
Pthreadsのスケジューリング
*行頭の文字を大文字にする

300ページ 「状態変数」

2行あるので、1行にまとめる
<修正後>
状態変数・・・・・・・69,77,88,94,275

304ページと奥付(2箇所)
<修正前>
Brad Nichols(ブラッド・ニコルス)
<修正後>
Bradford Nichols(ブラッドフォード・ニコルス)

305ページ ?紹介文
<修正前>
現在は、執筆業務に加えて、シンヨー電器(株)代表取締役
<修正後>
現在は、(有)榊製作所代表取締役

更新 2002年11月

目次

訳者まえがき
まえがき

1章 なぜマルチスレッドなのか?
    1.1 Pthreadsとは何か?
    1.2 並列可能性
    1.3 並行プログラミング環境における並列可能性の記述
    1.4 並列プログラミングと並行プログラミング
    1.5 同期
    1.6 私は誰? あなたは誰?
    1.7 スレッドの実行の終了
    1.8 なぜプロセスではなくスレッドを使うのか?
    1.9 構造化プログラミング環境
    1.10 スレッド化するアプリケーションの選択

2章 マルチスレッドプログラムの設計
    2.1 マルチスレッド化に適したタスク
    2.2 モデル
    2.3 スレッド間のデータのバッファリング
    2.4 一般的な問題
    2.5 パフォーマンス
    2.6 例:ATMサーバ
    2.7 例:行列乗算プログラム

3章 Pthreadsの同期
    3.1 適切な同期ツールの選択
    3.2 mutex変数
    3.3 状態変数
    3.4 リーダー/ライターロック
    3.5 ATMサーバの同期
    3.6 スレッドプール

4章 Pthreadsの管理
    4.1 スレッド属性の設定
    4.2 pthread_once機構
    4.3 キー:スレッド固有のデータの使用
    4.4 キャンセレーション
    4.5 Pthreadsのスケジューリング
    4.6 mutexのスケジューリング属性

5章 PthreadsとUNIX
    5.1 スレッドとシグナル
    5.2 スレッドセーフなライブラリ関数とシステムコール
    5.3 キャンセレーションセーフなライブラリ関数とシステムコール
    5.4 スレッドをブロックするライブラリ関数とシステムコール
    5.5 スレッドとプロセスの管理
    5.6 マルチプロセッサシステムのメモリ同期

6章 実践的な考察
    6.1 Pthreadsの実装を理解する
    6.2 デバッグ
    6.3 パフォーマンス
    6.4 まとめ

付録A PthreadsとDCE
    A.1 DCEサーバの構造
    A.2 DCEプログラマが行わなければならないこと
    A.3 例:DCEサーバとしてのATMサーバ
付録B Pthreads Draft 4と最終規格
    B.1 スレッドのデタッチ
    B.2 mutex変数
    B.3 状態変数
    B.4 スレッド属性
    B.5 pthread_once関数
    B.6 キー
    B.7 キャンセレーション
    B.8 スケジューリング
    B.9 シグナル
    B.10 スレッドセーフなシステムインタフェース
    B.11 エラーレポート
    B.12 システムインタフェースとキャンセレーションセーフ
    B.13 プロセスブロッキングコール
    B.14 プロセス管理
付録C Pthreadsクイックリファレンス
索引