特定の 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);
}