我得到了2個與Vertx線程模型有關的問題。 The documentation提到:Vertex線程模型
- 甲Vert.x實例維護Ñ事件循環線程(其中N由缺省值是芯* 2)由缺省值。
- 對於絕大多數應用所要求的併發水平,阻塞的方法不能按比例
Vertx還提供了線程池相關的函數來處理使用要求對事件處理很長時間的服務器資源的任務(工線程)。好的,所以我們知道線程在它們所需的內存(例如它們的堆棧)和上下文切換方面具有開銷。
Vertx線程不會被阻塞(如果正確使用),但是如果我們得到比核心更多的事件循環(以及工作線程的線程池)不是上下文切換不可避免的嗎?
第二個問題 - 我想了解vert如何確保單個線程運行事件循環,考慮到線程切換/調度在OS級別完成的事實。我在this documentation紅認爲:
事件循環背景上的一個事件循環執行處理程序:處理程序直接在IO線程執行,其結果是:
- ,處理器將總是以相同的線程中執行
- 處理程序不能阻塞該線程,否則會爲與該事件循環關聯的所有IO任務創建飢餓。
somone請澄清「handlers are executed directly on the IO threads
」嗎?