EventLoop 與 Channel 的關聯

2021-09-06 15:37:49 字數 579 閱讀 2352

netty 中, 每個 channel 都有且僅有乙個 eventloop 與之關聯, 它們的關聯過程如下:

從上圖中我們可以看到, 當呼叫了abstractchannel#abstractunsafe.register後, 就完成了 channel 和 eventloop 的關聯. register 實現如下:

@override

public final void register(eventloop eventloop, final channelpromise promise) else }); } catch (throwable t) } }

abstractchannel#abstractunsafe.register中, 會將乙個 eventloop 賦值給 abstractchannel 內部的 eventloop 字段, 到這裡就完成了 eventloop 與 channel 的關聯過程.

事件迴圈(event loop)

1.執行的順序 同步任務先執行,等同步任務執行完畢 非同步等待主線扔去清空 主線任務清空之後,進入任務佇列,開始從任務佇列進入到主線程。2.同步 和非同步 的執行書序 同步 是從上往下依次執行。非同步 的執行需要根據情況而定,因為在事件迴圈中,又將 分為巨集任務和微任務。3.巨集任務和微任務 在現實...

重構了MTAPI 的event loop

總結起來,實現乙個基於select的非同步多路io的要點是 乙個執行緒,用於阻塞在select呼叫上,在讀寫集可用或者超時後立刻返回,檢查所發生的事件 一對額外的pipe描述符或者一對socket描述符,用於修改讀寫集後喚醒執行緒。windows上沒有本地socket,也不支援select pipe...

JS 事件迴圈機制(Event Loop)

js事件迴圈機制,最常用到的地方應該是做面試題,經常給出一段 讓你寫出console.log 順序,很傷腦經,死記題目過不久又忘了。了解js事件迴圈機制之後,可以很輕鬆的解決這類題目。js是單執行緒模式,但是又經常聽到 非同步 多執行緒 的概念,js中的 非同步 多執行緒 由事件迴圈機制現的 事件迴...