2012-01-16 3 views
2

Я пытаюсь изменить сродство каждого потока в начальной процедуре.Pthread_setaffinity_np недействительный аргумент

Вот код. В приведенном ниже коде 't' - это аргумент, передаваемый функцией pthread_create.

cpu_set_t mask; 
    pthread_t c; 

    a = *((int *)t); 

    printf(" thread no. is %d \n",a); 

    CPU_ZERO(&mask); 

    a =a/2 + 1; 

    CPU_SET(a,&mask); 

    c=pthread_self(); 
    s=pthread_setaffinity_np(c,sizeof(cpu_set_t), &mask); 
    if (s!=0) 
     handle_error_en(s,"pthread_setaffinity_np"); 

Сходство нитей не меняется. Где я иду не так?

+0

Вы можете заменить весь оператор switch на 'CPU_SET ((a/2 + 1), &mask);', кстати. –

+0

Ohh Спасибо ...: P – akhil28288

+0

Возможно, лучше, чтобы быть уверенным, что он оценивается только один раз, a = a/2 + 1; CPU_SET (a, &mask); '. –

ответ

1

Я неправильно понял границы маски. Вот где я ошибся.

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