CPU_SET(0, &mask) 将cpu0添加到集合mask中,本质为对应bit置1 CPU_CLR(0, &mask); 将cpu0从集合mask中移除,本质为对应bit清零 CPU_ISSET(1, &mask); 判断cpu1是否在集合mask中,在返回非零,不在返回0 CPU_COUNT(&mask); 返回集合set2中的CPU的个数 CPU_AND(&result, &set1, &set2); set1和s...
cpu_set_t mask; CPU_ZERO(&mask); CPU_SET(0, &mask); // 将进程绑定到第一个CPU核心 if (sched_setaffinity(pid, sizeof(mask), &mask) == -1) { perror("sched_setaffinity"); return 1; } printf("已将进程绑定到CPU核心 0\n"); // 获取进程的CPU亲和性设置 cpu_set_t affinityMask; ...
#define _GNU_SOURCE /* See feature_test_macros(7) */#include <sched.h>/* 设置进程号为pid的进程运行在mask所设定的CPU上 * 第二个参数cpusetsize是mask所指定的数的长度 * 通常设定为sizeof(cpu_set_t)* 如果pid的值为0,则表示指定的是当前进程 */int sched_setaffinity(pid_t pid, size_t cp...
cpumask_t mask = {0}; printk("%*pbl\n", cpumask_pr_args(&mask)); printk("%*pb\n", cpumask_pr_args(&mask)); cpumask_set_cpu(16,&mask); cpumask_set_cpu(127,&mask); printk("%*pbl\n", cpumask_pr_args(&mask)); printk("%*pb\n", cpumask_pr_args(&mask)); return 0...
int sched_getaffinity(pid_t pid, size_t cpusetsize,cpu_set_t *mask);另外可以通过下面的函数获知当前进程运行在哪个CPU上:int sched_getcpu(void);如果调用成功,该函数返回一个非负的CPU编号值。例程:#define _GNU_SOURCE #include <sched.h> #include <unistd.h> #include <sys/types.h> #...
cpu_set_t mask;// cpu核的集合 cpu_set_t get;// 获取在集合中的cpu int* a=(int*)arg; printf("this is: %d\n",*a);// 打印这是第几个线程 CPU_ZERO(&mask);// 将集合置为空集 CPU_SET(*a,&mask);// 设置亲和力值 if(sched_setaffinity(0,sizeof(cpu_set_t),&mask)==-1)// ...
// unsigned long __bits[CPU_SETSIZE / __NCPUBITS]; // } cpu_set_t; // set affinity for thread #ifdef __GLIBC__ pid_t pid = syscall(SYS_gettid); #else pid_t pid = gettid(); #endif cpu_set_t mask; CPU_ZERO(&mask); ...
mask:cpu_set_tCPU Affinity掩码 另外可以通过下面的函数获知当前进程运行在哪个CPU上: intsched_getcpu(void); 如果调用成功,该函数返回一个非负的CPU编号值。 实战演练 #define _GNU_SOURCE#include<sched.h>#include<unistd.h>#include<stdio.h>#include<stdlib.h>#include<sys/wait.h>intmain(intargc,cha...
cpusetsize:mask 参数所指向的 CPU 集合的大小。 mask:与进程进行绑定的 CPU 集合(由于一个进程可以绑定到多个 CPU 上运行)。 参数mask的类型为cpu_set_t,而cpu_set_t是一个位图,位图的每个位表示一个 CPU,如下图所示: 例如,将cpu_set_t的第0位设置为1,表示将进程绑定到 CPU0 上运行,当然我们可以将进...
<sched.h>//#include <ctype.h>#include <string.h>#include<pthread.h>#defineTHREAD_MAX_NUM 100//1个cpu内最多进程数intnum=0;//cpu中核数void* threadFun(void* arg)//arg传递线程标号,自己定义{//sleep(2);cpu_set_t mask;//cpu核的集合cpu_set_tget;//获取在集合中的cpuint* a=(int*)...