經常使用的宏定義有:函數
1) 對cpu集進行初始化, 將其設置爲空集ui
void CPU_ZERO(cpu_set_t *set);線程
2) 將指定的cpu加入到cpu集中進程
void CPU_SET(int cpu, cpu_set_t *set);get
3) 將指定的cpu從集中刪除it
void CPU_CLR(int cpu, cpu_set_t *set);thread
4) 查詢cpu是否在集中,在,返回非0值; 不在,返回0cpu
int CPU_ISSET(int cpu, cpu_set_t *set);查詢
經常使用的函數有:co
#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