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

タイマー、アラーム、およびプロファイル

Solaris OS は、このいくつかのリリースの間に、アラーム、インターバルタイマー、およびプロファイルに関してプロセスごとのモードに展開してきました。

タイマー

LWP ごとであるリアルタイムプロファイルのインターバルタイマーを除き、すべてのタイマーがプロセスごとです。ITIMER_REALPROF タイマーについては、setitimer(2) のマニュアルページを参照してください。

プロセスごとのタイマーのタイマー ID は、どの LWP からでも使用できます。期限切れシグナルは、特定の LWP に対してではなく、そのプロセスに対して生成されます。

プロセスごとのタイマーは、timer_delete(3RT) の呼び出し時またはそのプロセスの終了時にのみ削除されます。

アラーム

アラームは、スレッドレベルではなくプロセスレベルで動作します。alarm() 関数は、シグナル SIGALRM を呼び出しスレッドではなく呼び出しプロセスに送信します。

マルチスレッドプログラムのプロファイリング

マルチスレッドプロセスの profil() システムコールは、そのプロセス内のすべての LWP およびスレッドに大域的な影響力を持ちます。スレッドが、個々のスレッドのプロファイリングのために profil() を使用することはできません。詳細は、profil(2) のマニュアルページを参照してください。


ヒント –

Sun Studio ソフトウェアに含まれている Performance Analyzer ツールを使用すると、マルチスレッドプログラムやシングルスレッドプログラムの広範囲なプロファイリングを行うことができます。このツールでは、指定した任意の時点でのスレッドの動作を詳細に表示できます。詳細は、Sun Studio Web ページおよび Sun Studio Information Center を参照してください。