Usa sched_setaffinity a livello di processo o pthread_attr_setaffinity_np per i singoli thread.
Devi usare sched_setaffinity(2)
.
Ad esempio, per funzionare solo sulle CPU 0 e 2:
#define _GNU_SOURCE
#include <sched.h>
cpu_set_t mask;
CPU_ZERO(&mask);
CPU_SET(0, &mask);
CPU_SET(2, &mask);
int result = sched_setaffinity(0, sizeof(mask), &mask);
(0
poiché il primo parametro indica il processo corrente, fornire un PID se si tratta di un altro processo che si desidera controllare).
Vedi anche sched_getcpu(3)
.