Для Linux есть sched_setaffinity
. Например, если вы хотите, чтобы он работал только на процессорах 1 и 3:
cpu_set_t set;
CPU_ZERO(&set);
CPU_SET(1, &set);
CPU_SET(3, &set);
sched_setaffinity(pid, CPU_SETSIZE, &set);
Внимание: sched_setaffinity
и sched_getaffinity
относятся к Linux (их нет в других системах POSIX).
На BSD есть cpuset_setaffinity
с аналогичной семантикой. Я ожидаю, что у Solaris будет аналогичная функция.