特定の pthread の CPU アフィニティを設定するにはどうすればいいですか? 質問する

特定の pthread の CPU アフィニティを設定するにはどうすればいいですか? 質問する

特定の pthread の CPU アフィニティを指定したいと思います。これまでに見つけたすべての参考文献は、pid_tスレッド ( ) ではなくプロセス ( pthread_t) の CPU アフィニティの設定に関するものでした。 を渡す実験をいくつか試してみましたpthread_tが、予想どおり失敗しました。不可能なことをしようとしているのでしょうか? そうでない場合は、ポインタを送っていただけますか? 本当にありがとうございます。

ベストアンサー1

これは、私の生活を楽にするために作ったラッパーです。その効果は、呼び出しスレッドが id でコアに「固定」されることですcore_id

// core_id = 0, 1, ... n-1, where n is the system's number of cores

int stick_this_thread_to_core(int core_id) {
   int num_cores = sysconf(_SC_NPROCESSORS_ONLN);
   if (core_id < 0 || core_id >= num_cores)
      return EINVAL;

   cpu_set_t cpuset;
   CPU_ZERO(&cpuset);
   CPU_SET(core_id, &cpuset);

   pthread_t current_thread = pthread_self();    
   return pthread_setaffinity_np(current_thread, sizeof(cpu_set_t), &cpuset);
}

おすすめ記事