我正在使用Linux Centos。
我使用pthread编写c并使用 pthread_set_affinity 。我希望看到每个线程都在独特的处理器中运行。喜欢---
thread1 in proccessor 0
thread2 in proccessor 1
.
.
.
threadn in processor n
目前当我使用这个set_affinity时它会运行,但是当我看到系统监视器时,我发现八核的CPU利用率没有分配。
CODE就是这样 ::
if(for thread 1 )
{
pthread_attr_init(&pta);
CPU_SET(0,&cpuset);
pthread_setaffinity_np(thread1, sizeof(cpu_set_t), &cpuset);
pthread_create(&thread1,&pta,&sendimsg,(void*)&message);
pthread_join(thread1,NULL);
printf("User for Thread One : %d\n",numb.fir);
pthread_attr_destroy(&pta);
CPU_ZERO(&cpuset);
}
else if(for thread 2)
{
pthread_attr_init(&pra);
CPU_SET(1,&cpuset1);
pthread_setaffinity_np(thread2, sizeof(cpu_set_t), &cpuset);
pthread_create(&thread2,&pra,&sendimsg,(void*)&message);
pthread_join(thread2,NULL);
printf("User for Thread Two : %d\n",numb.sec);
pthread_attr_destroy(&pra);
CPU_ZERO(&cpuset1);
}
for eight thread that way.
注意:线程分配如20 20 20 20 ... 20
百分比就是这样
10%1%0%2%0%1%0%0%1%
我有八个核心PC,试图在8核心中运行8个线程。有一种方法可以在这个pthread和pthread_set_affinity中完全利用8个核心。
答案 0 :(得分:0)
您可能没有足够的工作来完全使用线程。您不需要设置亲和力来执行此操作,只需生成8个实际上100%使用单个线程的线程。