当前位置: 首页 > news >正文

湖州网站建设策划学编程软件

湖州网站建设策划,学编程软件,温州论坛官方网,宿迁网站建设公司最近在对项目进行性能优化#xff0c;由于在多核平台上#xff0c;所以了解了些进程、线程绑定cpu核的问题#xff0c;在这里将所学记录一下。不管是线程还是进程#xff0c;都是通过设置亲和性(affinity)来达到目的。对于[进程]的情况#xff0c;一般是使用sched_setaffi… 最近在对项目进行性能优化由于在多核平台上所以了解了些进程、线程绑定cpu核的问题在这里将所学记录一下。不管是线程还是进程都是通过设置亲和性(affinity)来达到目的。对于[进程]的情况一般是使用sched_setaffinity这个函数来实现网上讲的也比较多这里主要讲一下[线程]的情况。与[进程]的情况相似[线程]亲和性的设置和获取主要通过下面两个函数来实现int pthread_setaffinity_np(pthread_t thread, size_t cpusetsizeconst cpu_set_t *cpuset); int pthread_getaffinity_np(pthread_t thread, size_t cpusetsize, cpu_set_t *cpuset); 从函数名以及参数名都很明了唯一需要点解释下的可能就是cpu_set_t这个结构体了。这个结构体的理解类似于select中的fd_set 可以理解为cpu集也是通过约定好的宏来进行清除、设置以及判断void CPU_ZERO (cpu_set_t *set); //初始化设为空 void CPU_SET (int cpu, cpu_set_t *set); //将某个cpu加入cpu集中 void CPU_CLR (int cpu, cpu_set_t *set); //将某个cpu从cpu集中移出 int CPU_ISSET (int cpu, const cpu_set_t *set); //判断某个cpu是否已在cpu集中设置了 cpu集可以认为是一个掩码每个设置的位都对应一个可以合法调度的 cpu而未设置的位则对应一个不可调度的 CPU。换而言之线程都被绑定了只能在那些对应位被设置了的处理器上运行。通常掩码中的所有位都被置位了也就是可以在所有的cpu中调度。以下为测试代码#define _GNU_SOURCE #include stdio.h #include stdlib.h #include string.h #include unistd.h #include pthread.h #include sched.hvoid *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核减少进程、线程的核间切换有可能可以获得更高的性能。  回复「 篮球的大肚子」进入技术群聊回复「1024」获取1000G学习资料
http://www.zqtcl.cn/news/730085/

相关文章:

  • 龙华网站建设专业定制企业外贸网店怎么开
  • 申请网站做自己的产品做头像一个字的网站
  • 外贸网站建设行业发展情况北京 企业网站开发
  • dedecms 倒计时 天数 网站首页创业众筹平台
  • 隆尧建设局网站wordpress彻底禁用google
  • 自己做网站需要什么技能比邻店网站开发
  • 网站建设杭州最便宜劳务公司找项目平台
  • jsp做网站毕业设计安徽省交通运输厅章义
  • 企业网站有哪几个类型广州做网站市场
  • 直播网站建设开发上海注册公司多少钱
  • 可以兼职做设计的网站备案期间能否做网站解析
  • 做发帖的网站代码seo联盟平台
  • 铁威马 Nas 做网站百度广告代运营
  • 有没有帮别人做网站小说关键词生成器
  • 那些开店的网站是自己做的吗装修平台排行榜前十名
  • 重庆智能网站建设价格毕业设计做系统跟做网站哪个容易
  • 淘宝美工做兼职的网站多多返利网站建设
  • 如何承接设计网站建设电商平台开发流程
  • 安康做网站简洁高端的wordpress个人博客
  • 酒店网站建设协议手机怎么做销售网站
  • 屏蔽网站接口js广告seminar
  • 谁有手机网站啊介绍一下wordpress 流量插件
  • 杭州网站公司google网站建设
  • 莱芜住房和城乡建设厅网站网站头部设计
  • 织梦响应式茶叶网站模板邯郸最新通告今天
  • 深圳公司网站改版通知做网站分类链接
  • 电子商务网站建设答案网络运营与维护
  • 网站登陆怎么做网站app的区别
  • 获取网站缩略图工信部2017网站备案
  • 有哪些网站可以做ps挣钱自己制作游戏