有人知道vert.x如何处理以下情况?
Verticle B执行会等待A的所有队列完成吗?
文档不清楚这方面。
以下是文档摘录:http://vertx.io/manual.html#event-loops
部署标准Verticle实例时,服务器会选择 将分配给该实例的事件循环。任何后续的 将始终使用该实例调度该实例要完成的工作 确切的线程。当然,因为可能有数千个 在任何时候运行的Verticle,单个事件循环都将是 同时分配给许多Verticle。
我们称之为多反应堆模式。这就像反应堆模式 但是有不止一个事件循环。
谢谢, 米哈伊
答案 0 :(得分:3)
Vert.x事件循环是来自Netty的NioEventLoop
。事件循环线程要执行的任务在MpscLinkedQueue
中排队,这是一个单一消费者/多生产者队列。
这意味着计划执行的任务按照提交的顺序进行处理。
但是,如果有多个Verticle实例(它们都是相同事件的可能消费者),则应用循环调度以在消费者之间平均分配传入事件。
答案 1 :(得分:0)
我不会谈论“cpu事件”,而是关于一般事件。 如果两个Verticle都被分配到同一个事件循环,并且事件按照您说它们将以这种方式执行的顺序排队 - 没有事件优先级:事件按它们在队列中的顺序处理。
然而,这种情况非常不可能,而且vert.x中的重要事情是每个处理程序都不会阻塞事件循环 - 理想情况下,每个Verticle / handler应该花费很少的cpu时间来保持平台的正常运行
HTH,
卡罗