當前位置:首頁 » 操作系統 » linux線程切換

linux線程切換

發布時間: 2024-02-06 12:26:40

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內核進行線程切換需要多少時間

Linux內核切換線程時間在微秒級別,幾十微秒。

1. 查看需要更新的內核命令:

apt-cachesearchlinux
#該命令將會顯示所有可以獲取的內核

2. 安裝內核,假設要安裝的內核為2.6.39-0,則使用下面的命令

sudoapt-getinstalllinux-headers-2.6.39-0-genericlinux-image-2.6.39-0-generic
#安裝後,reboot即可,重啟後,既是以新內核啟動。
熱點內容
王水是用什麼配置的 發布:2024-11-28 17:43:59 瀏覽:620
編程貓簡 發布:2024-11-28 17:30:20 瀏覽:162
firefox清除dns緩存 發布:2024-11-28 17:26:59 瀏覽:939
蝸牛星際存儲怎麼樣 發布:2024-11-28 17:24:56 瀏覽:420
安卓微信加人過期了怎麼加回去 發布:2024-11-28 17:24:52 瀏覽:48
安卓微轉領袖怎麼授權 發布:2024-11-28 17:17:25 瀏覽:651
華強北二手安卓哪裡買 發布:2024-11-28 17:14:37 瀏覽:413
要聽密碼是多少 發布:2024-11-28 17:10:56 瀏覽:461
安卓和安卓怎麼傳相冊相片 發布:2024-11-28 17:06:58 瀏覽:7
網路電視密碼一般是什麼 發布:2024-11-28 17:03:18 瀏覽:32