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

プロファイル

Solaris 2.6 より前の リリースでは、profil() をマルチスレッドプログラムから呼び出すと、呼び出した LWP にだけ適用されます。プロファイルの状態は、LWP の作成時には継承されません。 グローバルプロファイルバッファを使用してマルチスレッドプログラムにプロファイルを適用するには、各スレッドを起動するときに profil() を呼び出す必要があります。また、各スレッドは、結合スレッドでなければなりません。これは面倒で、プロファイルの動的な切り替えは簡単ではありませんでした。Solaris 2.6 以降のリリースでは、マルチスレッドプロセスから profil() システム呼び出しを行うと、大域的に適用されます。つまり、profil() を呼び出すと、プロセス内のすべての LWP およびスレッドに適用されます。 これにより、以前の LWP ごとの方式に依存したアプリケーションは、使用できなくなることがあります。しかし、実行時に動的にプロファイルを切り替えたい場合の状況を改善するものと期待されます。