最近在進行性能優化需要了解了些進程、線程綁定cpu核的問題。
點擊(此處)摺疊或打開
- #define _GNU_SOURCE
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
- #include <pthread.h>
- #include <sched.h>
- void *myfun(void*arg)
- {
- cpu_set_t mask;
- cpu_set_t get;
- char buf[256];
- int i;
- int j;
- int num=
sysconf(_SC_NPROCESSORS_CONF);
- printf("system has %d processor(s)\n",
num);
- for(i=
0; i< num;
i++){
- CPU_ZERO(&mask);
- CPU_SET(i,&mask);
- if(pthread_setaffinity_np(pthread_self(),
sizeof(mask),&mask)<
0){
- fprintf(stderr,"set
thread affinity failed\n");
- }
- CPU_ZERO(&get);
- if(pthread_getaffinity_np(pthread_self(),
sizeof(get),&get)<
0){
- fprintf(stderr,"get
thread affinity failed\n");
- }
- for(j=
0; j< num;
j++){
- if(CPU_ISSET(j,&get)){
- printf("thread %d is running in processor %d\n",(int)pthread_self(),
j);
- }
- }
- j = 0;
- while(j++<
100000000){
- memset(buf,
0, sizeof(buf));
- }
- }
- pthread_exit(NULL);
- }
- int main(int
argc, char*argv[])
- {
- pthread_t tid;
- if(pthread_create(&tid,NULL,(void*)myfun,NULL)!=
0){
- fprintf(stderr,"thread
create failed\n");
- return -1;
- }
- pthread_join(tid,NULL);
- return 0;
- }
轉載處:http://blog.chinaunix.net/uid-27714502-id-3515874.html