8 15學習總結

2021-09-26 05:39:10 字數 578 閱讀 6386

linux平台下執行緒池的原理及實現

什麼時候需要建立執行緒池呢?簡單的說,如果乙個應用需要頻繁的建立和銷毀執行緒,而任務執行的時間又非常短,這樣執行緒建立和銷毀的帶來的開銷就不容忽視,這時也是執行緒池該出場的機會了。如果執行緒建立和銷毀時間相比任務執行時間可以忽略不計,則沒有必要使用執行緒池了。

下面是linux系統下用c語言建立的乙個執行緒池。執行緒池會維護乙個任務鍊錶(每個cthread_worker結構就是乙個任務)。

pool_init()函式預先建立好max_thread_num個執行緒,每個執行緒執thread_routine ()函式。該函式中

while (pool->cur_queue_size == 0)

表示如果任務鍊錶中沒有任務,則該執行緒出於阻塞等待狀態。否則從佇列中取出任務並執行。

pool_add_worker()函式向執行緒池的任務鍊錶中加入乙個任務,加入後通過呼叫pthread_cond_signal (&(pool->queue_ready))喚醒乙個出於阻塞狀態的執行緒(如果有的話)。

pool_destroy ()函式用於銷毀執行緒池,執行緒池任務鍊錶中的任務不會再被執行,但是正在執行的執行緒會一直把任務執行完後再退出。

8 15 學習筆記header 用法

header location exit 在每個重定向之後都必須加上 exit 避免發生錯誤後,繼續執行。title php定時跳轉 功能 等待指定的時間,然後再跳轉到指定頁面 代替html meta方式 header refresh 3 url print 正在載入,請稍等.三秒後自動跳轉 補充說...

8 15 完美交換 2699

你和你的夥伴們將禮物都裝好了,你們抱著各自的禮物,想通過交換讓你們總和的完美值最大。你們的 總和完美值 的計算方法是 每個人的位置 每人禮物的完美值 再求總和。我們保證每個人手上的完美值都不等。如下表 位置 1 2 3 4 所拿禮物的完美值 200 400 100 430 當前的 總和完美值 120...

JZOJ 8 15比賽 題解

第一題 icow 剛看這題的時候覺得要用快排,但其實不用。我們只須將每次經過題目要求改變的r陣列中的最大值輸出即可,並按照題目要求改變r陣列。第二題 化妝晚會 我們可以用頭尾指標來做這道題。首先將大於s的l i 賦值為0,再將l陣列中沒有為0的值按照從小到大快排一下,再用while迴圈列舉頭尾指標,...