2011-05-21 8 views
5

Estaba probando un código c en una máquina física y virtual y necesito limitar el no. de la CPU utilizada durante la ejecución del programa c. Hay alguna forma de hacer esto ?Límite Nº de CPU en C

Respuesta

6

Para Linux no es sched_setaffinity. Por ejemplo, si desea que se ejecute sólo en las CPUs 1 y 3:

cpu_set_t set; 

CPU_ZERO(&set); 
CPU_SET(1, &set); 
CPU_SET(3, &set); 

sched_setaffinity(pid, CPU_SETSIZE, &set); 

Precaución: sched_setaffinity y sched_getaffinity son específicas de Linux (que no existen en otros sistemas POSIX).

En BSD hay cpuset_setaffinity con semántica similar. Espero que Solaris tenga una característica similar.

6

No plataforma de forma independiente, pero en Windows, puede utilizar SetProcessAffinityMask:

SetProcessAffinityMask(GetCurrentProcess(), 0x1); //Only CPU #1 
Cuestiones relacionadas