当前位置: 首页 > 知识库问答 >
问题:

是的。x是否在分配给同一事件循环的垂直线之间提供公平的调度?

杜凯
2023-03-14

有人知道vert如何处理以下情况吗。十、

  • 考虑分配给同一事件循环的垂直线A和垂直线B

verticle B执行是否会等待A中的all队列完成?

有关这方面的文档并不清楚。

以下是一些留档摘录:http://vertx.io/manual.html#event-loops

部署标准verticle实例时,服务器选择将分配给该实例的事件循环。要为该实例执行的任何后续工作都将始终使用该线程进行调度。当然,由于在任何时间都可能有数千个垂直轴运行,因此一个事件循环将同时分配给多个垂直轴。

我们称之为多Reactor模式。这就像Reactor模式,但有不止一个事件循环。

谢谢,米海

共有2个答案

易琨
2023-03-14

我不会谈论“cpu事件”,而是一般的事件。如果两个垂直轴都分配给同一个事件循环,并且事件按照您所说的顺序排队,那么就没有事件优先级:事件按照它们在队列中的顺序处理。

然而,这是非常不可能的场景,也是vert中的重要内容。x是每个处理程序都不会阻塞事件循环——理想情况下,每个垂直/处理程序应该花费很少的cpu时间来保持平台快速运行


卡罗

酆茂才
2023-03-14

垂直面。x事件循环是Netty的一个NioEventLoop。事件循环线程要执行的任务在MpscLinkedQueue中排队,该队列是一个单一使用者/多生产者队列。

这意味着计划执行的任务按照提交的顺序进行处理。

但是,如果有多个verticle实例(它们都可能是相同事件的使用者),则会应用循环调度来在使用者之间均匀地分配传入事件。

 类似资料:
  • 在浏览vert.x Java devs guide时,我发现vert.x在每个CPU线程上附加了2个事件循环。与每个CPU线程1个事件循环相比,这对性能有何影响?

  • 我知道,在vert. x中,默认的版本将在每次我们不需要在处理程序中写入线程安全时运行在相同的事件循环中。 例如,如果我有一个运行HttpServer的版本- } 可以保证,在任何时候,我的请求处理程序都会在两个事件循环上被调用两次(针对2个不同的请求)。因此,我不必在请求处理程序中处理线程安全问题。 如果我运行多个HttpServer顶点实例- 我需要注意线程安全吗?多个请求处理程序(最大值=1

  • 问题内容: 这是模块的模块声明: 因此,和之间存在循环依赖关系,对吗?平台模块之间是否允许循环? 问题答案: 模块系统禁止使用子句静态声明循环。对于平台和应用程序模块,这是正确的,并且您给出的示例不违反该规则。 不过,Requires子句只是模块图中可读性优势的一种来源。其他是命令行标志,反射,,我敢肯定还有更多。添加所有这些可能会导致模块图中的循环,并且这是不被禁止的。 在您的具体示例中,仅当

  • 我正在使用Vert创建一个简单的TCP服务器。x和数据以压缩数据包的形式在客户端和服务器之间发送。 我想使用垂直线来创建这种性质的东西(其中是垂直线,箭头显示数据流): 问题是,我不确定如何将NetSocket从一个版本(结果从)携带到下一个版本。我当然可以发送的结果从到的版本,但当的版本收到这个数据,它将没有任何句柄来使用引用它来回复NetSocket必须给发件人。 本质上,我需要通过事件总线携

  • 无法建立垂直。云环境中垂直柱之间的x群集 我在配置vert时遇到问题。x eventbus群集在私有云环境中。 在实验室测试中,我尝试使用Hazelcast集群管理器制作两个垂直点来建立一个集群,每个垂直点都在您自己的容器中运行。 问题很可能是由于配置错误引起的,但我无法找到它。在这个云上,不可能进行多播调用,那么我使用的是TCP IP发现策略。 最初的计划是制作一个“labatf api”垂直链

  • 问题内容: 我是eclipse IDE的新手。 我们可以在Eclipse中为Java编辑器执行以下操作吗? 如何在Eclipse中配置它以显示Java编辑器中匹配的花括号之间的垂直线?可能吗? 问题答案: 我可以建议的最接近的解决方案是: 单击Eclipse IDE>窗口>首选项>常规>编辑器>文本编辑器 然后单击链接“空白字符”以指定应显示的内容。 然后,仅对Tab启用复选框“ Leading