談一談執行緒池

2021-10-14 10:17:24 字數 596 閱讀 3621

1、執行緒池是什麼?執行緒池是建立若干個可以執行的執行緒並把它們管理起來,如果有任務需要執行就讓某乙個空閒的執行緒去執行任務,任務執行完成之後掛起執行緒等待喚醒。

2、為什麼需要執行緒池?執行緒的建立和銷魂都是需要呼叫作業系統api為其分配資源,成本高和開銷大,為了避免頻繁的建立和銷毀增加的開銷就需要執行緒池。

接下來說說怎麼實現執行緒池,執行緒池這種屬於通用結構,實現時應該和業務層面進行解耦,上層呼叫只需要關注的是執行緒池的大小和執行的動作函式。

1、可以定義乙個cthreadpool的類,這個類對外提供2個主要的函式,初始化init函式和action執行動作函式,初始化函式主要傳入的是執行緒池的大小,執行動作的函式引數

可以是函式指標(這種方式引數受限),最好傳入乙個類指標作為引數,該類過載乙個操作符比如(),執行動作的函式在()類函式中實現。執行緒池類中獲取到了類的指標,只需要呼叫()。

2、執行緒節點的結構是訊號量和動作執行函式,執行緒池中的每乙個執行緒對應乙個執行緒節點,把執行緒節點放入訊息佇列,然後執行緒阻塞等待被任務喚醒。

3、取執行緒函式從空閒佇列中取出執行緒節點,然後把動作執行函式賦值給執行緒節點,接著發訊號喚醒該執行緒。

4、執行緒執行完成之後清理資源,然後重新加入訊息佇列,阻塞,迴圈執行。

我來談一談執行緒

我堅信每個程式設計師都有被執行緒折磨得死去活來的經歷,我也是!為了解決乙個問題,我愣是弄了兩天,發帖求助,但是最終也沒有解決!沒有辦法只有自己動手,豐衣足食!上面是一點廢話,其實,執行緒我也沒有弄透徹,今天只是寫一寫其兩個屬性,terminated,suspended,不要小看這兩個屬性,它們確實管...

談一談教育

今晚和研究生的師兄聊了會天,突然就說到教育的問題,有點感想,就寫下來,算是我對中國教育的一點看法吧。毫無疑問,中國的教育體制存在不少問題。在高中的時候或許還不是那麼明顯 對比起大學來說 上了大學,我才看清了我們教育的一些弊端。我覺得,最大的弊端,在於價值觀的引導問題上。不知道大家有沒和我一樣覺得當今...

談一談裁員

資本寒冬,經濟不景氣,要保持公司運作,可能會涉及到裁員。另外,有些員工的價值觀已經與公司不符,再留用可能會影響團隊和公司的和諧,此時也可能會涉及到裁員。裁員,不是說想裁就能裁的,需要考慮幾個方面 為什麼要裁?是否可以不裁?裁員是否會影響業務程序?裁員是否會付出經濟代價 賠償 裁員是否會負一定的法律責...