新负责的程序采用生产者和消费者的模式,生产者的速度非常快,数据几乎都在内存里,处理起来很快。而消费者要频繁的I/O。所以打算给生产者和消费者分配不一样的核心。

生产者只需要一个核心就够了,其余分配给消费者。

查了下这方面的资料,shell端有taskset命令可用。

taskset:

-p 正在运行的进程pid

-c 列表形式显示指定cpu

-v version

-h help

用法:i.e.

# taskset -cp 1,2,3 4321

# taskset -c 1,2,3-5 /usr/bin/XXX

linux提供了两个函数

  • sched_set_affinity() (用来修改位掩码)
  • sched_get_affinity() (用来查看当前的位掩码)

cpu_affinity 会被传递给子线程,因此应该适当地调用 sched_set_affinity

每个核心对应一位掩码,相应位设为1

为每个线程设置 CPU 亲和性(affinity)

  cpu_set_t mask;
/* CPU_ZERO initializes all the bits in the mask to zero. */
CPU_ZERO( &mask );
/* CPU_SET sets only the bit corresponding to cpu. */
CPU_SET( created_thread, &mask );
/* sched_setaffinity returns 0 in success */
if( sched_setaffinity( 0, sizeof(mask), &mask ) == -1 )
{
printf("WARNING: Could not set CPU Affinity, continuing...\n");
}

获取系统处理器数量

int NUM_PROCS = sysconf(_SC_NPROCESSORS_CONF);

最新文章

  1. CSS深入理解之overflow
  2. Android5.0如何正确启用isLoggable(二) 理分析
  3. IOS中如果使用RGB实现背景色
  4. 当用GridView导出Execl的时候,会发生只能在执行 Render() 的过程中调用 RegisterForEventValidation的错误
  5. [NodeJS] Deploy a Node Application with the Now CLI
  6. Asp.Net Cookie的清除
  7. Blog透视镜
  8. Windows配置Python编程环境
  9. js事件触发(一)
  10. c3p0数据库连接池+mysql数据库基本使用方法
  11. 程序员是这样区分Null和Undefined
  12. AHOI2019N省联考凉凉记
  13. EF中更新操作 ID自增但不是主键 ;根据ViewModel更新实体的部分属性
  14. .net排坑篇:负载均衡域名转发的背后
  15. SpringMvc支持跨域访问,Spring跨域访问,SpringMvc @CrossOrigin 跨域[转]
  16. Object.assign()解释整理
  17. L306 词汇题
  18. asp.net MVC 统计在线人数功能实现
  19. Miscellaneos:版本控制、SVN、VSS
  20. NavagationBar 设置颜色和状态栏设置白色

热门文章

  1. Oracle Dataguard三种保护模式概述(转)
  2. poj 3411 Paid Roads
  3. VC++客户端 缩小包的尺寸
  4. 整理mysql的一些常用用法
  5. dot.js教程文档api
  6. eclipse android sdk javadoc
  7. js返回当前时间的毫秒数
  8. gulp api
  9. 论山寨手机与Android联姻的技术基础 【序】
  10. Codeforces 339E