Linux將執行緒繫結到CPU核心執行

2022-05-03 11:12:21 字數 1521 閱讀 5182

先介紹三個函式

一、pthread_setafftinity_np

在linux上,我們可以使用pthread特定的pthread_setafftinity_np函式。通過設定其親和性將每個執行緒固定到單個cpu

//

設定cpu親和度,為0表示設定成功,非0值表示失敗

int rc =pthread_setaffinity_np(p[i].native_handle(),sizeof(cpu_set_t), &cpuset);

第乙個引數是執行緒的控制代碼,第二個引數是cpu集合的大小,第三個引數是cpu集合的位址

執行緒和核心繫結成功返回值為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 

#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個執行緒繫結在第乙個和第三個cpu核心執行

將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表...