這一章需要juc相關的知識。
事件/任務的執行順序 事件和任務是以先進先出(fifo)的順序執行的。這樣可以通過保證字
節內容總是按正確的順序被處理,消除潛在的資料損壞的可能性。
我們之前已經闡明了不要阻塞當前i/o 執行緒的重要性。我們再以另一種方式重申一次:「永
遠不要將乙個長時間執行的任務放入到執行佇列中,因為它將阻塞需要在同一執行緒上執行的任何
其他任務。」如果必須要進行阻塞呼叫或者首席執行官時間執行的任務,我們建議使用乙個專門的
eventexecutor。(見6.2.1 節的「channelhandler 的執行和阻塞」)。
eventloopgroup 負責為每個新建立的channel 分配乙個eventloop。在當前實現中,使用順序迴圈(round-robin)的方式進行分配以獲取乙個均衡的分布,並且相同的eventloop
可能會被分配給多個channel。(這一點在將來的版本中可能會改變。)
一旦乙個channel 被分配給乙個eventloop,它將在它的整個生命週期中都使用這個
eventloop(以及相關聯的thread)。請牢記這一點,因為它可以使你從擔憂你的channel-handler 實現中的執行緒安全和同步問題中解脫出來。
另外,需要注意的是,eventloop 的分配方式對threadlocal 的使用的影響。因為乙個
eventloop 通常會被用於支撐多個channel,所以對於所有相關聯的channel 來說,
threadlocal 都將是一樣的。這使得它對於實現狀態追蹤等功能來說是個糟糕的選擇。然而,
在一些無狀態的上下文中,它仍然可以被用於在多個channel 之間共享一些重度的或者代價昂
貴的物件,甚至是事件。
執行緒概念和多執行緒模型
程序是伴隨著多道程式技術而引入的 和程序一樣,執行緒有它的tcb和id,也有就緒,阻塞,執行三種狀態 執行緒幾乎不擁有系統資源,系統資源是分配給程序的,同一程序內的執行緒共享程序的資源 同一程序內的執行緒間切換,不用切換程序環境。執行緒分為 使用者級執行緒 和 核心級執行緒 即守護執行緒 使用者級執...
王道 執行緒概念和多執行緒模型
6 多執行緒模型 在引入程序之前,系統中各個程式只能序列執行 引入程序之後,系統中各個程序之間可以併發執行 有的程序可能需要 同時 做很多事情,而傳統的程序只能序列地執行一系列程式。為此,引入了 執行緒 來增加併發度 傳統的程序是程式執行流的最小單位,也就是說cpu處理的是乙個個程序 在程序中引入了...
6 執行緒的概念和多執行緒模型
系統在建立乙個新進 程時,便為它分配乙個任務資料區 ptda per task data area 其中包括若干個執行緒控制塊tcb空間。只要其所建立的執行緒數目未超過系統的允許值 通常為數十至數百個 系統可再為之分配新的tcb空間 1 執行時系統 2 核心控制線程 輕型程序 light weigh...