2012-01-16 10 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 = 2/1 + CPU_SET(a、&mask); '。 –

答えて

1

私はマスクの境界を誤解していました。それが私が間違っているところだった。