, , - fork(). , , Linux, , sysconf(), unix-... , , , .
numcpu = sysconf( _SC_NPROCESSORS_ONLN );
CPU_ZERO(&mycpuset);
sched_getaffinity( getpid() , sizeof mycpuset , &mycpuset);
for(i=0 ; i < numcpu ; i++ )
{
if(CPU_ISSET( i, &mycpuset))
{
mycpu = i;
break;
}
}
while(1)
{
if((pid = fork()) == 0)
{
}
else
{
cpu = ++cpu % numcpu;
if(cpu == mycpu)
cpu = ++cpu % numcpu;
CPU_ZERO(&mycpuset);
CPU_SET(cpu,&mycpuset);
sched_setaffinity(pid, sizeof mycpuset, &mycpuset );
}
}