线程绑定CPU核-sched_setaffinity——003
来源:互联网 发布:手机掌上贵金属软件 编辑:程序博客网 时间:2024/05/19 02:00
http://blog.csdn.net/lanyzh0909/article/details/50404664
CPU亲合力就是指在Linux系统中能够将一个或多个进程绑定到一个或多个处理器上运行.
一个进程的CPU亲合力掩码决定了该进程将在哪个或哪几个CPU上运行.在一个多处理器系统中,设置CPU亲合力的掩码可能会获得更好的性能.
一个CPU的亲合力掩码用一个cpu_set_t结构体来表示一个CPU集合,下面的几个宏分别对这个掩码集进行操作:
·CPU_ZERO() 清空一个集合
·CPU_SET()与CPU_CLR()分别对将一个给定的CPU号加到一个集合或者从一个集合中去掉.
·CPU_ISSET()检查一个CPU号是否在这个集合中.
下面两个函数就是用来设置获取线程CPU亲和力状态:
·sched_setaffinity(pid_t pid, unsigned int cpusetsize, cpu_set_t *mask)
该函数设置进程为pid的这个进程,让它运行在mask所设定的CPU上.如果pid的值为0,则表示指定的是当前进程,使当前进程运行在mask所设定的那些CPU上.第二个参数cpusetsize是mask所指定的数的长度.通常设定为sizeof(cpu_set_t).如果当前pid所指定的进程此时没有运行在mask所指定的任意一个CPU上,则该指定的进程会从其它CPU上迁移到mask的指定的一个CPU上运行.
·sched_getaffinity(pid_t pid, unsigned int cpusetsize, cpu_set_t *mask)
该函数获得pid所指示的进程的CPU位掩码,并将该掩码返回到mask所指向的结构中.即获得指定pid当前可以运行在哪些CPU上.同样,如果pid的值为0.也表示的是当前进程
测试代码:
编译命令:gcc bind.c -o bind -lpthread
执行:./bind
输出结果:略
特别注意:
#define __USE_GNU不要写成#define _USE_GNU
#include<pthread.h>必须写在#define __USE_GNU之后,否则编译会报错
查看你的线程情况可以在执行时在另一个窗口使用top -H来查看线程的情况,查看各个核上的情况请使用top命令然后按数字“1”来查看。
- 线程绑定CPU核-sched_setaffinity——003
- 线程绑定CPU核-sched_setaffinity
- 线程绑定CPU核——001
- 线程绑定CPU核
- 线程绑定CPU核
- 线程绑定CPU核
- 线程绑定CPU核
- 线程绑定CPU核
- 线程绑定CPU核
- 线程绑定CPU核
- 线程绑定CPU核
- 将进程或线程attach到一个特定CPU核上的方法(sched_setaffinity pthread_setaffinity_np example)
- 线程与cpu进行绑定——006非常全面
- 线程与CPU核的绑定
- 线程cpu绑定技术
- 线程绑定CPU
- 为线程绑定CPU
- 内核线程绑定CPU
- CSS3动画实现登录界面
- PHP内核探索之变量(4)- 数组操作
- 服务器 'FILE' 上的 MSDTC 不可用
- Mybatis 批量查询 Map 嵌套 List
- 字符串操作函数实现strcpy() strcmp()...
- 线程绑定CPU核-sched_setaffinity——003
- 分数化小数
- jQuery 的attr()与css()的区别
- svn基本操作
- break和continue的区别
- UE4上传图片和PHP交互
- Linux环境下RPM交叉编译找不到libz.so.1的动态库
- linux IIC详解
- Yarn之ResourceManager详细分析笔记(一)