我得到了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
”吗?