先介紹三個函式
一、pthread_setafftinity_np
在linux上,我們可以使用pthread特定的pthread_setafftinity_np函式。通過設定其親和性將每個執行緒固定到單個cpu
//第乙個引數是執行緒的控制代碼,第二個引數是cpu集合的大小,第三個引數是cpu集合的位址設定cpu親和度,為0表示設定成功,非0值表示失敗
int rc =pthread_setaffinity_np(p[i].native_handle(),sizeof(cpu_set_t), &cpuset);
執行緒和核心繫結成功返回值為0,失敗返回乙個非0值
二、sysconf(_sc_nprocessors_conf);
//完整**獲取電腦cpu核心的數量
intcpu_num;
cpu_num =sysconf(_sc_nprocessors_conf);
cout
<
cpu_num=
"<三、cpu_set_t結構體
cpu_set_t這個結構體了。這個結構體的理解類似於select中的fd_set,可以理解為cpu集,也是通過約定好的巨集來進行清除、設定以及判斷:
有下列幾種操作
//初始化,設為空
void cpu_zero (cpu_set_t *set
); //
將某個cpu加入cpu集中
void cpu_set (int cpu, cpu_set_t *set
); //
將某個cpu從cpu集中移出
void cpu_clr (int cpu, cpu_set_t *set
); //
判斷某個cpu是否已在cpu集中設定了
int cpu_isset (int cpu, const cpu_set_t *set);
#include #include將4個執行緒繫結在第乙個和第三個cpu核心執行#include
#include
#include
#include
using
namespace
std;
mutex _mutex;
void func(int id,int
cnt)
while (1) }
intmain()
}for(int i=0;i<4;i++)
return0;
}
將4個執行緒繫結在各自對應的4個cpu核心執行
xilinx 繫結執行緒到cpu核
linux系統提供api函式sched setaffinity和sched getaffinity用於設定或獲取執行緒的可以使用的cpu核。int sched setaffinity pid t pid,unsigned int cpusetsize,cpu set t mask 這個函式中pid表...
執行緒繫結CPU核
linux系統提供api函式sched setaffinity和sched getaffinity用於設定或獲取執行緒的可以使用的cpu核。int sched setaffinity pid t pid,unsigned int cpusetsize,cpu set t mask 這個函式中pid表...
執行緒繫結CPU核
linux系統提供api函式sched setaffinity和sched getaffinity用於設定或獲取執行緒的可以使用的cpu核。int sched setaffinity pid t pid,unsigned int cpusetsize,cpu set t mask 這個函式中pid表...