常用的宏定义有:
1) 对cpu集进行初始化, 将其设置为空集
void CPU_ZERO(cpu_set_t *set);
2) 将指定的cpu加入到cpu集中
void CPU_SET(int cpu, cpu_set_t *set);
3) 将指定的cpu从集中删除
void CPU_CLR(int cpu, cpu_set_t *set);
4) 查询cpu是否在集中,在,返回非0值; 不在,返回0
int CPU_ISSET(int cpu, cpu_set_t *set);
常用的函数有:
#include <unistd.h>
1) 查询可使用的核数
int sysconf(_SC_NPROCESSORS_CONF);
返回系统可以使用的核数,但是其值会包含系统中禁用的核的数目,因此该值并不代表当前系统中可用的核数
2) 当前系统可以使用的核数
int sysconf(_SC_NPROCESSORS_ONLN);
真正代表了系统当前可用的核数
与以上两个函数类似的另外两个函数如下:
#include <sys/sysinfo.h>
1)获取可用核数
int get_nprocs_conf(void);
2) 获取当前真正可用的核数
int get_nprocs(void);
进程与cpu的绑定
#include <sched.h>
1) 设置进程与cpu的绑定
int sched_setaffinity(pid_t pid, size_t cpusize, const cpu_set_t *mask);
2) 查看进程与cpu的绑定
int sched_getaffinity(pid_t pid, size_t cpusize, const cpu_set_t *mask);
线程与cpu的绑定
1) 设置线程与cpu的绑定
int pthread_setaffinity_np(pthread_t thread, size_t cpuszie, const cpu_set_t *mask);
2) 查看线程与 cpu 的绑定
int pthread_getaffinity_np(pthread_t thread, size_t cpusize, const cpu_set_t *mask);
查看当前系统cpu相关信息:
cat /proc/cpuinfo