linux线程绑核排他,Linux 中线程与 CPU 核的绑定

#define _GNU_SOURCE#include #include #include #include #include #include void *myfun(void *arg){ cpu_set_t mask; cpu_set_t get; char buf[256]; int i; int j; int num = sysconf(_SC_NPROCESSORS_CONF); printf("system has %d processor(s)\n", num); for (i = 0; i < num; i++) { CPU_ZERO(&mask); CPU_SET(i, &mask); if (pthread_setaffinity_np(pthread_self(), sizeof(mask), &mask) < 0) { fprintf(stderr, "set thread affinity failed\n"); } CPU_ZERO(&get); if (pthread_getaffinity_np(pthread_self(), sizeof(get), &get) < 0) { fprintf(stderr, "get thread affinity failed\n"); } for (j = 0; j < num; j++) { if (CPU_ISSET(j, &get)) { printf("thread %d is running in processor %d\n", (int)pthread_self(), j); } } j = 0; while (j++ < 100000000) { memset(buf, 0, sizeof(buf)); } } pthread_exit(NULL);}int main(int argc, char *argv[]){ pthread_t TId; if (pthread_create(&TId, NULL, (void *)myfun, NULL) != 0) { fprintf(stderr, "thread create failed\n"); return -1; } pthread_join(TId, NULL); return 0;}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

#define _GNU_SOURCE

#include

#include

#include

#include

#include

#include

void*myfun(void*arg)

{

cpu_set_tmask;

cpu_set_tget;

charbuf[256];

inti;

intj;

intnum=sysconf(_SC_NPROCESSORS_CONF);

printf("system has %d processor(s)\n",num);

for(i=0;i

CPU_ZERO(&mask);

CPU_SET(i,&mask);

if(pthread_setaffinity_np(pthread_self(),sizeof(mask),&mask)<0){

fprintf(stderr,"set thread affinity failed\n");

}

CPU_ZERO(&get);

if(pthread_getaffinity_np(pthread_self(),sizeof(get),&get)<0){

fprintf(stderr,"get thread affinity failed\n");

}

for(j=0;j

if(CPU_ISSET(j,&get)){

printf("thread %d is running in processor %d\n",(int)pthread_self(),j);

}

}

j=0;

while(j++<100000000){

memset(buf,0,sizeof(buf));

}

}

pthread_exit(NULL);

}

intmain(intargc,char*argv[])

{

pthread_t;

if(pthread_create(&tid,NULL,(void*)myfun,NULL)!=0){

fprintf(stderr,"thread create failed\n");

return-1;

}

pthread_join(tid,NULL);

return0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值