マルチスレッドのプログラミング

Solaris のマルチスレッドライブラリと標準

マルチスレッドプログラミングの概念の起源は、少なくとも 1960 年代にさかのぼります。その後、UNIX システム上でマルチスレッドプログラミングが行われるようになったのは、1980 年代中盤のことです。マルチスレッドの意味とそのサポートに必要な機能に関する合意がありますが、マルチスレッドを実装するためのインタフェースはさまざまです。

この数年間、POSIX (Portable Operating System Interface) 1003.4a によって、スレッドプログラミングの標準化についての作業が行われてきました。この標準は最終的に承認され、現在は Single UNIX Specification (SUS) の一部になっています。最新の仕様は、Open Group の Web サイトで入手できます。Solaris 10 リリースから、Solaris OS は Open Group の UNIX 03 Product Standard (SUSv3) に準拠しています。

POSIX 標準が承認される前、Solaris のマルチスレッド API は、Solaris libthread ライブラリで実装されていました。Sun が開発したこのライブラリは、そのあとで UNIX International (UI) スレッド標準の基礎になっています。この libthread ライブラリは、1993 年に Solaris 2.2 リリースで導入されました。1995 年の Solaris 2.5 リリースでは、POSIX 標準のサポートが libpthread API によって追加され、それ以降は両方の API が使用可能になりました。Solaris 10 リリースからは、libthread ライブラリと libpthread ライブラリが標準の libc C ライブラリに統合されました。

libthread ライブラリと libpthread ライブラリは、実行環境とコンパイル環境の両方の下位互換を提供するために維持されています。libthread.so.1 および libpthread.so.1 共有オブジェクトは、libc.so.1 に対するフィルタとして実装されています。詳細は、libthread(3LIB)libpthread(3LIB) のマニュアルページを参照してください。

両方のスレッドライブラリがサポートされていますが、通常は POSIX ライブラリを使用するようにしてください。threads(5) のマニュアルページには、POSIX スレッドと Solaris スレッドの相違点と類似点が記載されています。

この『マルチスレッドのプログラミング』は、POSIX 標準 IEEE Std 1003.1: 2001 の最新のリビジョン (ISO/IEC 9945:2003 とも Single UNIX Specification Version 3 とも呼ばれる) に基づいています。

Solaris スレッド固有の機能については、第 6 章Solaris スレッドを使ったプログラミングを参照してください。