linux多執行緒學習設定執行緒排程許可權

2021-08-07 04:14:24 字數 1278 閱讀 1724

pthread_setschedparam 設定執行緒的許可權

int pthread_setschedparam(pthread_t target_thread, int policy, const struct sched_param *param)

引數 1. target_thread是使用

pthread_create

所獲得的執行緒id。

2.執行緒的排程有三種策略:

sched_other

、sched_rr

和sched_fifo

。policy用於指明使用哪種策略。下面我們簡單的說明一下這三種排程策略。

sched_other

它是預設的執行緒分時排程策略,所有的執行緒的優先級別都是0,執行緒的排程是通過分時來完成的。簡單地說,如果系統使用這種排程策略,程式將無法設定執行緒的優先順序。請注意,這種排程策略也是

搶占式的,當高優先順序的執行緒準備執行的時候,當前執行緒將被搶占並進入

等待佇列

。這種排程策略僅僅決定執行緒在可執行執行緒佇列中的具有相同優先順序的執行緒的執行次序。

sched_fifo

它是一種實時的先進先出呼叫策略,且只能在

超級使用者

下執行。這種呼叫策略僅僅被使用於優先順序大於0的執行緒。它意味著,使用

sched_fifo

的可執行執行緒將一直搶占使用

sched_other

的執行執行緒j。此外

sched_fifo

是乙個非分時的簡單排程策略,當乙個執行緒變成可執行狀態,它將被追加到對應

優先順序佇列

的尾部((posix 1003.1)。當所有高優先順序的執行緒終止或者阻塞時,它將被執行。對於相同優先順序別的執行緒,按照簡單的先進先執行的規則執行。我們考慮一種很壞的情況,如果有若干相同優先順序的執行緒等待執行,然而最早執行的執行緒無終止或者阻塞動作,那麼其他執行緒是無法執行的,除非當前執行緒呼叫如pthread_yield之類的函式,所以在使用

sched_fifo

的時候要小心處理相同級別執行緒的動作。

sched_rr

鑑於sched_fifo

排程策略的一些缺點,

sched_rr

對sched_fifo

做出了一些增強功能。從實質上看,它還是

sched_fifo

呼叫策略。它使用最大執行時間來限制當前程序的執行,當執行時間大於等於最大執行時間的時候,當前執行緒將被切換並放置於相同優先順序佇列的最後。這樣做的好處是其他具有相同級別的執行緒能在「自私「執行緒下執行。

返回值  0表示設定成功 其他表示設定不成功

多執行緒 設定執行緒池執行緒數量

一 需求 web server通常有個配置,最大工作執行緒數,後端服務一般也有個配置,工作執行緒池的執行緒數量,這個執行緒數的配置不同的業務架構師有不同的經驗值,有些業務設定為cpu核數的2倍,有些業務設定為cpu核數的8倍,有些業務設定為cpu核數的32倍。工作執行緒數 的設定依據是什麼,到底設定...

學習linux的多執行緒

xthread.h ifndef x thread h define x thread h include extern unsigned int xsleep unsigned int imillis class xthread endif xthread.cpp include void xth...

linux多執行緒學習筆記

1.乙個程序中的所有執行緒都可以訪問該程序的組成部件,如檔案描述符和記憶體。2.在乙個程序中採用多執行緒程式設計可以改善響應時間和提高系統吞吐量。3.程序的所有資訊對該程序的所有執行緒都是共享的,包括可執行的程式文字,程式的全域性記憶體和堆記憶體,棧以及檔案描述符。4.執行緒id用pthread t...