このマニュアルは、SolarisTM オペレーティング環境で使用される POSIX スレッドと Solaris スレッドに対応した、マルチスレッドのプログラミングインタフェースの解説書です。このマニュアルでは、アプリケーションを作成するプログラマを対象に、マルチスレッドを使った新しいプログラムの作成方法と、既存のプログラムをマルチスレッド化する方法を説明します。
このマニュアルは、POSIX スレッドと Solaris スレッドの両方の実装を扱っていますが、ほとんどの説明は POSIX スレッドを想定して書かれています。Solaris スレッドだけに適用される情報については、独立した章を設けて解説しています。
このマニュアルは、読者が次の基礎知識を持っていることを前提にして書かれています。
UNIX® SVR4 システム — 特に Solaris オペレーティング環境
C プログラミング言語 — マルチスレッドが libthread ライブラリで実装されている
並行プログラミング (逐次プログラミングに対して) の原理 — マルチスレッドでは、機能の相互作用についての考え方を変える必要があります。以下に参考文献を示します。
『Algorithms for Mutual Exclusion』、Michel Raynal (MIT Press, 1986)
『Concurrent Programming』、Alan Burns & Geoff Davies (Addison-Wesley, 1993)
『Distributed Algorithms and Protocols』、Michel Raynal (Wiley, 1988)
『オペレーティングシステムの概念 (I、II)』、シルバーシャッツ、ピーターソン著、宇都宮・福田訳、培風館、原典『Operating System Concepts』、Silberschatz、Peterson、Galvin (Addison-Wesley, 1991)
『並行プログラミングの原理』、M・ベンアリ、渡辺訳、啓学出版、原典『Principles of Concurrent Programming』、M. Ben-Ari (Prentice-Hall, 1982)
第 1 章「マルチスレッドの基礎」では、このリリースにおけるスレッドの実装について概説します。
第 2 章「スレッドを使った基本プログラミング」では、デフォルトの属性をもつスレッドの作成方法を中心に、一般的な POSIX スレッドライブラリルーチンについて説明します。
第 3 章「スレッド生成時の属性設定」では、デフォルト以外の属性をもつスレッドの生成方法を説明します。
第 4 章「同期オブジェクトを使ったプログラミング」では、スレッドライブラリの同期ルーチンについて説明します。
第 5 章「オペレーティング環境が関係するプログラミング」では、マルチスレッドをサポートするためにオペレーティング環境に加えられた変更を説明します。
第 6 章「安全なインタフェースと安全ではないインタフェース」では、マルチスレッドの安全性に関する問題を説明します。
第 7 章「コンパイルとデバッグ」では、マルチスレッド対応のアプリケーションのコンパイルとデバッグの基礎を説明します。
第 8 章「Solaris スレッドを使ったプログラミング」では、Solaris スレッド (POSIX スレッドと対比して) のインタフェースについて説明します。
第 9 章「プログラミング上の指針」では、マルチスレッドアプリケーションを作成するプログラマに関係する問題について説明します。
付録 A 「アプリケーションの例 — マルチスレッド化された grep」 では、POSIX スレッド用にコードを指定する方法を示します。
付録 B 「Solaris スレッドの例 — barrier.c」 では、Solaris スレッドの中にバリアを設ける例を示します。
docs.sun.com では、Sun が提供しているオンラインマニュアルを参照することができます。マニュアルのタイトルや特定の主題などをキーワードとして、検索を行うこともできます。URL は、http://docs.sun.com です。
このマニュアルでは、次のような字体や記号を特別な意味を持つものとして使用します。
表 P–1 表記上の規則
字体または記号 |
意味 |
例 |
---|---|---|
AaBbCc123 |
コマンド名、ファイル名、ディレクトリ名、画面上のコンピュータ出力、コード例を示します。 |
.login ファイルを編集します。 ls -a を使用してすべてのファイルを表示します。 system% |
AaBbCc123 |
ユーザーが入力する文字を、画面上のコンピュータ出力と区別して示します。 |
system% su password: |
AaBbCc123 |
変数を示します。実際に使用する特定の名前または値で置き換えます。 |
ファイルを削除するには、rm filename と入力します。 |
『 』 |
参照する書名を示します。 |
『コードマネージャ・ユーザーズガイド』を参照してください。 |
「 」 |
参照する章、節、ボタンやメニュー名、強調する単語を示します。 |
第 5 章「衝突の回避」を参照してください。 この操作ができるのは、「スーパーユーザー」だけです。 |
\ |
枠で囲まれたコード例で、テキストがページ行幅を超える場合に、継続を示します。 |
sun% grep `^#define \ XV_VERSION_STRING' |
コード例は次のように表示されます。
[ ] は省略可能な項目を示します。上記の例は、filename は省略してもよいことを示しています。
| は区切り文字 (セパレータ) です。この文字で分割されている引数のうち 1 つだけを指定します。
キーボードのキー名は英文で、頭文字を大文字で示します (例: Shift キーを押します)。ただし、キーボードによっては Enter キーが Return キーの動作をします。
ダッシュ (-) は 2 つのキーを同時に押すことを示します。たとえば、Ctrl-D は Control キーを押したまま D キーを押すことを意味します。
以下の表に、C シェル、Bourne シェル、および Korn シェルのデフォルトのシステムプロンプト、およびスーパーユーザーのプロンプトを紹介します。
表 P–2 シェルプロンプト
シェル |
プロンプト |
---|---|
C シェルプロンプト | machine_name% |
C シェルのスーパーユーザープロンプト | machine_name# |
Bourne シェルおよび Korn シェルプロンプト | $ |
Bourne シェルおよび Korn シェルのスーパーユーザープロンプト | # |