常用的宏定义有:

1) 对cpu集进行初始化, 将其设置为空集

void CPU_ZERO(cpu_set_t *set);

2) 将指定的cpu加入到cpu集中

void CPU_SET(int cpu, cpu_set_t *set);

3) 将指定的cpu从集中删除

void CPU_CLR(int cpu, cpu_set_t *set);

4) 查询cpu是否在集中,在,返回非0值; 不在,返回0

int CPU_ISSET(int cpu, cpu_set_t *set);

常用的函数有:

#include <unistd.h>

1) 查询可使用的核数

int sysconf(_SC_NPROCESSORS_CONF);

返回系统可以使用的核数,但是其值会包含系统中禁用的核的数目,因此该值并不代表当前系统中可用的核数

2) 当前系统可以使用的核数

int sysconf(_SC_NPROCESSORS_ONLN);

真正代表了系统当前可用的核数

与以上两个函数类似的另外两个函数如下:

#include <sys/sysinfo.h>

1)获取可用核数

int get_nprocs_conf(void);

2) 获取当前真正可用的核数

int get_nprocs(void);

进程与cpu的绑定

#include <sched.h>

1) 设置进程与cpu的绑定

int sched_setaffinity(pid_t pid, size_t cpusize, const cpu_set_t *mask);

2) 查看进程与cpu的绑定

int sched_getaffinity(pid_t pid, size_t cpusize, const cpu_set_t *mask);

线程与cpu的绑定

1) 设置线程与cpu的绑定

int pthread_setaffinity_np(pthread_t thread, size_t cpuszie, const cpu_set_t *mask);

2) 查看线程与 cpu 的绑定

int pthread_getaffinity_np(pthread_t thread, size_t cpusize, const cpu_set_t *mask);

查看当前系统cpu相关信息:

cat /proc/cpuinfo

线程或进程绑定到特定的cpu的更多相关文章

  1. windows下绑定线程(进程)到指定的CPU核心

    一个程序指定到单独一个CPU上运行会比不指定CPU运行时快.这中间主要有两个原因:1)CPU切换时损耗的性能.2)Intel的自动降频技术和windows的机制冲突:windows有一个功能是平衡负载 ...

  2. SetThreadAffinityMask windows下绑定线程(进程)到指定的CPU核心

    原帖地址:https://www.cnblogs.com/lvdongjie/p/4476766.html 一个程序指定到单独一个CPU上运行会比不指定CPU运行时快.这中间主要有两个原因:1)CPU ...

  3. 【笔记】Linux进程间同步和进程绑定至特定cpu

    #define _GNU_SOURCE #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> ...

  4. taskset: 让进程运行在指定的CPU 上

    观察发现4核CPU,只有第1个核心(CPU#0)非常忙,其他都处于idle状态. 不了解Linux是如何调度的,但目前显然有优化的余地.除了处理正常任务,CPU#0还需要处理每秒网卡中断.因此,若能将 ...

  5. 进程和线程之间的关系和区别 和 CPU牒

    流程具有一定独立功能的程序关于某个数据集合上的一次执行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立执行的基本单位. 进 ...

  6. Java内存模型 (一)什么是进程?什么是线程?进程和线程之间的区别是什么?

    什么是进程?什么是线程? 进程是系统中正在运行的一个程序,程序一旦运行就是进程. 进程可以看成程序执行的一个实例.进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间.一个进程无法访问另一个进程 ...

  7. LR中线程和进程的区别

    LoadRunner中的进程与线程    1.进程与线程的区别: 进程和线程的区别是什么?进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性.进程和线程的区别 ...

  8. 进击的Python【第九章】:paramiko模块、线程与进程、各种线程锁、queue队列、生产者消费者模型

    一.paramiko模块 他是什么东西? paramiko模块是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 先来个实例: import param ...

  9. py 并发编程(线程、进程、协程)

    一.操作系统 操作系统是一个用来协调.管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间. 程序是运行在系统上的具有某种功能的软件,比如说浏览器,音乐播放器等.操作系统的内核的定义:操 ...

随机推荐

  1. xss获取cookie源码附利用代码

    保存为cookie.asp <% testfile=Server.MapPath("cookies.txt") msg=Request("msg") se ...

  2. Spring Cloud 组件 —— hystrix

    作用与功能 ① 资源隔离, 每个依赖配备单独的线程池,为每个依赖提供一个小的线程池(或信号),如果线程池已满调用将被立即拒绝,默认不采用排队.加速失败判定时间.② 依赖超时,可配置依赖调用超时时间,超 ...

  3. Oracle 按指定顺序排序

    select * from (select 'Nick' as item from dual union all select 'Viki' as item from dual union all s ...

  4. Dubbo源码分析(4):Protocol

    Protocol接口是Dubbo框架的核心组件.Dubbo框架启动protocol接口实现类,由spring的xml文件配置决定.RegistryProtocol协议是Protocol协议的核心,它负 ...

  5. 批量把pod实例调成0

    #!/bin/bash namespace=`kubectl get ns|grep '^te-'|grep -v datamgr|awk '{print $1}'` #--------------- ...

  6. greenplum 下载地址

    一.推荐使用下面下载地址 https://network.pivotal.io/products/pivotal-gpdb#/releases/158026/file_groups/1083 二.官网 ...

  7. python3 结束子线程

    最近公司内部网络经常出问题,奇慢无比,导致人脸检测程序在下载图片时经常卡住,为了不影响数据的核对, 决定在网络不佳图片下载超时后放弃下载,继续执行后续程序. 于是整理出解决思路如下: 1.在线程中完成 ...

  8. 解决Cannot find config.m4 Make sure that you run '/home/php/bin/phpize' in the top level source directory of the module

    oot@DK:/home/daokr/downfile/php-7.0.0/ext/mysqlnd# /home/php/bin/phpizeCannot find config.m4. Make s ...

  9. BZOJ 1857: [Scoi2010]传送带

    二次联通门 : BZOJ 1857: [Scoi2010]传送带 /* BZOJ 1857: [Scoi2010]传送带 三分套三分 可能是吧..dalao们都说明显是一个单峰函数 可是我证不出来.. ...

  10. [WARNING] 找不到编译器:wepy-compiler-less。 [Error] 未发现相关 less 编译器配置,请检查wepy.config.js文件。

    npm install less 之后 npm install wepy-compiler-less 解决 请点赞!因为你的鼓励是我写作的最大动力! 吹逼交流群:711613774