if (CPU_ISSET(1, &cpuset)) { // 如果cpuset中CPU 1对应的位被设置,则执行此代码块 } 三、代码示例 获取当前进程的亲和性,并将亲和性设置为CPU0和CPU1。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 #include <stdio.h> // 引入标准输入输出头文件 #include <stdlib.h> // 引入标准库头文...
if (CPU_ISSET(1, &cpuset)) { // 如果cpuset中CPU 1对应的位被设置,则执行此代码块 } 1. 2. 3. 三、代码示例 获取当前进程的亲和性,并将亲和性设置为CPU0和CPU1。 #include <stdio.h> // 引入标准输入输出头文件 #include <stdlib.h> // 引入标准库头文件,用于exit函数 #include <sched.h> /...
void CPU_CLR(int cpu, cpu_set_t *set); // Remove CPU cpu from set. int CPU_ISSET(int cpu, cpu_set_t *set); // Test to see if CPU cpu is a member of set. int CPU_COUNT(cpu_set_t * mask); //Return the number of CPUs in set. 1 2 3 4 5 进程绑定到指定CPU的示例程序...
= 0) { perror("sched_getaffinity failed"); // 处理错误 } // 打印当前进程的CPU亲和性 for (size_t i = 0; i < CPU_SETSIZE; i++) { if (CPU_ISSET(i, &get_cpuset)) { printf("CPU %zu ", i); } } printf(" "); 编译并运行代码: 将上述代码保存为一个C文件(例如set...
另外的几个宏CPU_CLR\CPU_ISSET\CPU_SET\CPU_ZERO定义也都定义在头文件/usr/include/bits/sched.h内: 1/*Access functions for CPU masks.*/2# define __CPU_ZERO(cpusetp)3do{4unsignedint__i;5cpu_set_t *__arr =(cpusetp);6for(__i =0; __i <sizeof(cpu_set_t) /sizeof(__cpu_mask...
另外的几个宏CPU_CLR\CPU_ISSET\CPU_SET\CPU_ZERO定义也都定义在头文件/usr/include/bits/sched.h内: 1 /* Access functions for CPU masks. */ 2 # define __CPU_ZERO(cpusetp) 3 do { 4 unsigned int __i; 5 cpu_set_t *__arr = (cpusetp); ...
另外的几个宏CPU_CLR\CPU_ISSET\CPU_SET\CPU_ZERO定义也都定义在头文件/usr/include/bits/sched.h内: View Code 利用这几个宏方便我们操作指定cpu的对应bit位,比如清零,置位等。看一个完整的demo程序: View Code 编译,并运行 gcc affinity_demo.c -o demo -std=c99 ...
可以通过多种手段取得CPU Core的个数,如: 1) 调用系统提供的函数get_nprocs(),可以在头文件sys/sysinfo.h中发现它 2) 借助系统提供的sysconf()函数..._SC_NPROCESSORS_ONLN),get_nprocs()也有个相应的get_nprocs_conf() 3) 通过解析/proc/cpuinfo实现 uint16_t get_cpu_number... fp = fopen("/proc...
第三个参数mask的类型为cpu_set_t,即CPU集合,GNU的c库(需要在include头文件之前定义__USE_GNU)还提供了操作它们的宏: voidCPU_CLR(int cpu, cpu_set_t *set); intCPU_ISSET(int cpu, cpu_set_t *set); voidCPU_SET(int cpu, cpu_set_t *set); voidCPU_ZERO(cpu_set_t *set); 如果我们所关...
((cpusetp)->__bits[__CPUELT (cpu)] &= ~__CPUMASK (cpu))#define__CPU_ISSET(cpu, cpusetp) \ (((cpusetp)->__bits[__CPUELT (cpu)] & __CPUMASK (cpu)) != 0) 其实就是定义了一个 unsigned long int 型的数组,使用每一位表示 cpu。例如,cpu 1 就是数组的第一个元素里...