2016-04-08 3 views
0

Я старался следовать рекомендациям в блоге this, и кажется, что даже если я устанавливаю CPU Set только в одном ядре моего MacOS, время. Можно ли запустить поток только в одном процессоре на такой операционной системе? Заранее спасибо.MacOSX: Сходство планировщика, похоже, не работает

void *th_func(void *arg); 

pthread_t thread; //the thread 
int counted = 0; 

void start() { 
    int* n = (int*)malloc(sizeof(int)); 
    *n = 0; 
    printf("creating on %d.\n",n[0]); 
    pthread_create(&thread,NULL,th_func,((void*) n)); 
} 

void waitall() { 
    pthread_join(thread,NULL); 
} 

int main(int argc, char** args) { 
start(); 
    waitall(); 
return 0; 
} 


void *th_func(void *arg) 
{ 
    cpu_set_t cpuset; 
    int cpu = ((int*)arg)[0]; 
    CPU_ZERO(&cpuset); 
    CPU_SET(cpu , &cpuset); 
    pthread_setaffinity_np(pthread_self(), sizeof(cpuset), &cpuset); 
    printf("Start suffocating on %d.\n",cpu); 
    while(1) { 

    }; 
} 

enter image description here

ответ

0

Этот вопрос кажется очень похож на Is it possible to set pthread CPU affinity in OS X?; Я считаю, что ответы там также отвечают на вопросы здесь.

+0

Нет. Я спрашиваю, верно ли поведение кода, на которое вы указали, из-за того, что более одного ядра управляют одним и тем же pthread, и, следовательно, сродство одного ядра, похоже, не работает через предоставленный apis. – jackb

Смежные вопросы