导航:首页 > 软件知识 > linux如何多线程跑一个程序

linux如何多线程跑一个程序

发布时间:2023-08-12 22:23:14

A. linux单进程如何实现多核cpu多线程分配

linux下的单进程多线程的程序,要实现每个线程平均分配到多核cpu,主要有2个方法


1:利用linux系统自己的线程切换机制,linux有一个服务叫做irqbalance,这个服务是linux系统自带的,默认会启动,这个服务的作用就是把多线程平均分配到CPU的每个核上面,只要这个服务不停止,多线程分配就可以自己实现。但是要注意,如果线程函数内部的有某个循环,且该循环内没有任何系统调用的话,可能会导致这个线程的CPU时间无法被切换出去。也就是占满CPU现象,此时加个系统调用,例如sleep,线程所占的CPU时间就可以切换出去了。


2:利用pthread库自带的线程亲和性设置函数,来设置线程在某个CPU核心上跑,这个需要在程序内部实现。同时注意不要和进程亲和性设置搞混淆了

intpthread_setaffinity_np(pthread_tthread,size_tcpusetsize,
constcpu_set_t*cpuset);
intpthread_getaffinity_np(pthread_tthread,size_tcpusetsize,
cpu_set_t*cpuset);
从函数名以及参数名都很明了,唯一需要点解释下的可能就是cpu_set_t这个结构体了。这个结构体的理解类似于select中的fd_set,可以理解为cpu集,也是通过约定好的宏来进行清除、设置以及判断:
//初始化,设为空
voidCPU_ZERO(cpu_set_t*set);
//将某个cpu加入cpu集中
voidCPU_SET(intcpu,cpu_set_t*set);
//将某个cpu从cpu集中移出
voidCPU_CLR(intcpu,cpu_set_t*set);
//判断某个cpu是否已在cpu集中设置了
intCPU_ISSET(intcpu,constcpu_set_t*set);
阅读全文

与linux如何多线程跑一个程序相关的资料

热点内容
检测信息系统哪个好 浏览:436
技术股份分红怎么算 浏览:415
营口东升市场是哪个区 浏览:106
人为什么要学技术呢 浏览:857
箱式炉适用于哪些产品 浏览:487
业主如何通过蛋壳获取租客信息 浏览:765
联动呀注销了为什么还有信息 浏览:643
如何查看他人抖音粉丝的数据 浏览:88
生吃水产品引起哪些病 浏览:35
怎么看qq删掉的交易记录 浏览:946
股票卖出多久才能继续交易 浏览:541
上虞的二手车市场有哪些地方 浏览:22
现在卖场卖对讲机产品前景如何 浏览:345
3g通信技术标准有哪些 浏览:732
交易猫怎么设置不能还价 浏览:440
大笔交易卖方为机构是什么意思 浏览:722
程序员最低多少岁 浏览:493
没办安心保怎么会收到安心保信息 浏览:900
交易猫商品详情页在哪里 浏览:40
恒指期货交易员怎么样 浏览:561