OpenSolaris と Linux の両方で動作する、C でスレッドの CPU 時間をプログラム的に取得する方法
-
25-09-2019 - |
質問
C で作成している小さなデーモンがあり、スレッド上の現在の CPU 時間を取得する方法が必要です。Linux では、これを行うためのさまざまな方法 (クロック_gettime(CLOCK_THREAD_CPUTIME_ID, ...)、pthread_getcpu Clockid()、getrusage(RUSAGE_THREAD, ...) を提供しているようですが、これらはいずれも OpenSolaris 2009.06 ではサポートされていないようです。
スレッドの現在の CPU 時間を取得するクロスプラットフォーム対応の方法はありますか?そうでない場合、OpenSolaris でそれを行う方法はありますか?現時点では、これを機能させるために、大量の醜いコンパイラ ディレクティブを追加することさえ厭いません。
解決
によると 「Solaris プラットフォームにおけるスレッドの優先順位」, 、Solaris 9 以降では、デフォルトでスレッドと LWP が 1 対 1 に対応します (軽量プロセス)。したがって、によると、 getrusage のマンページ, 、電話できるはずです getrusage(RUSAGE_LWP, ...)
.
所属していません StackOverflow