導航:首頁 > 軟體知識 > 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