博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
绑定线程到特定CPU处理器
阅读量:7010 次
发布时间:2019-06-28

本文共 1488 字,大约阅读时间需要 4 分钟。

参考这篇文章 

http://blog.chinaunix.net/uid-27761170-id-5050258.html

 

代码如下:

#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;}
这段代码将使myfun线程在所有cpu中依次执行一段时间,在我的四核cpu上,执行结果为
  :
       system has 4 processor(s)
        
       thread 1095604544 is running in processor 0
        
       thread 1095604544 is running in processor 1
        
       thread 1095604544 is running in processor 2
        
       thread 1095604544 is running in processor 3 
       在一些嵌入式设备中,运行的进程线程比较单一,如果指定进程线程运行于特定的cpu核,减少进程、线程的核间切换,有可能可以获得更高的性能。
 

转载地址:http://mdttl.baihongyu.com/

你可能感兴趣的文章
nagios 监控 网卡流量 脚本
查看>>
物理机向虚拟机迁移P2V
查看>>
我的友情链接
查看>>
CentOS在ssh下远程重装系统
查看>>
nginx变量使用方法详解(1)
查看>>
<!DOCTYPE html>声明下div高度100%的问题
查看>>
踢出登录用户
查看>>
Linux下apache安全配置策略
查看>>
我的友情链接
查看>>
2014年PHP框架前十排行榜
查看>>
python2.x和python3.x的区别
查看>>
我的友情链接
查看>>
servlet下载文件名乱码问题
查看>>
redhat下完全卸载Oracle10g
查看>>
word-break和word-wrap
查看>>
H3C防火墙的dns-map功能
查看>>
iOS 9 点击右上角退回到上一App时 屏幕会闪一下
查看>>
我的友情链接
查看>>
POSIX线程
查看>>
支付宝-APP支付
查看>>