1

アプリケーションには、ID を持っている多数の生きているスレッドがあり、pthread_t必要に応じて他の ID を取得できます。これらは別の配列に格納されます。

別のスレッドから呼び出している特定のスレッド (または最近実行されたスレッド) が現在実行されている CPU の ID/番号を特定するにはどうすればよいですか。

sched_getcpu(2)呼び出し元のスレッドでのみ機能しpthread_getaffinity_np、許可された CPU マスクのみを提供します。/procプロセス全体のCPU IDを提供するだけで、同様に役に立たない.

これは、NUMA 対応コードのデバッグ/チューニングに必要です。

4

1 に答える 1

2

少なくとも Lnux では、 をtid呼び出すことですべてのスレッドを取得できますgettid()

次に、 から 39 番目の要素を読み取って、CPU ID を検索します /proc/<pid>/task/<tid>/stat

(pidは 経由で読み取られますgetpid())


以下も参照してください。

于 2012-11-16T13:35:23.453 に答える