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

セマンティクスの選択 − Solaris または POSIX

一部の関数 (表 7-1 に示した関数など) は、POSIX 1003.1c 規格でのセマンティクスが Solaris オペレーティング環境 2.4 リリースでのセマンティクスと異なっています (後者は、より前の POSIX 草稿に基づいています)。関数の定義はコンパイル時に選択します。パラメタと戻り値の相違点については、『man pages section 3』を参照してください。

表 7-1 POSIX と Solaris でセマンティクスの異なる関数

sigwait(2)

asctime_r(3C)

ctime_r(3C)

getlogin_r(3C)

ftrylockfile(3S) - 新規

getgrgid_r(3C)

getgrnam_r(3C)

getpwuid_r(3C)

getpwnam_r(3C)

ttyname_r(3C)

readdir_r(3C)

 

Solaris の fork(2) 関数はすべてのスレッドを複製しますが (汎用 fork 動作)、POSIX の fork(2) 関数は Solaris の fork1() 関数と同様、呼び出しスレッドのみを複製します (fork1 動作)。

alarm(2) の処理も異なります。Solaris のアラームはそのスレッドの LWP に向けられますが、POSIX のアラームはプロセス全体に向けられます (詳細は、「スレッドごとのアラーム」を参照してください)。