update.とある実験をするのにスレッドに対してCPUアフィニティを設定する必要があったので、メモ。CPUアフィニティとはプロセス・スレッドはOSによってどれかのCPUコア上で実行される。CPUアフィニティを設定することで、その実行されるCPUコアを任意に制限・指定することができる。プロセスにCPUアフィニティを設定LinuxはCPUアフィニティを設定するための関数sched_setaffinityが用意されている。0;}cpu_set_t構造体はCPU集合を表している。CPU_ZERO関数でcpu_set_t構造体を初期化してから、CPU_SET関数で実行するCPUコアを指定する。4コアのCPUであれば0から3までの値を第一引数に指定する。詳しくはマニュアルを参照。sched_setaffinity関数の引数は順に、プロセスID、cpu_set_tのデータサイズ、cpu_set_tのポインタ。引数はgetpid関数を使うなりすればよい。第二引数は基本的にsizeof(cpu_set_t)。第三引数はCPU_SETで指定したcpu_set_t構造体変数のポインタを指定する。上の方法だとプロセス自体に設定されるので、スレッド単位でアフィニティ設定をしたいのであれば少しだけ違う。環境によってはpthread_setaffinity_npで可能である。プログラム例はマニュアルに載っているので省略。上の関数が使えない場合は、sched_setaffinity関数の第一引数にスレッドIDを渡すことで設定できる。gettid関数が使える環境であるならば、gettid関数で取得したpid_t構造体変数をそのまま投げればよい。gettid関数が使えないのであれば、システムコールを直接呼んでスレッドIDを取得する。0;}まとめsched_setaffinitypthread_setaffinity_npCPU_SETSYSCALL間違ってるところがあればご指摘お願いします。