【发布时间】:2014-08-25 10:51:24
【问题描述】:
我对 vertx 实例感到困惑。第一次看到文档,我认为实例意味着事件循环线程的数量。
当我深入研究源代码(vertx 2.1.2)时,我发现 verticle 实例意味着事件循环线程组中的一个任务。事件循环线程始终等待选择器并运行任务。
那么第一个问题来了:
是否有必要在 vertx 中有 verticle 实例? 因为 vertcle 只在一个事件循环中运行一次。更准确地说,事件循环线程运行 Verticle start 方法并将其丢弃,它就像一个条目一样工作,仅此而已。
我的第二个问题是:
如何收集多个事件的结果?
设想- 使用同一处理程序实例在事件总线上发送多个查询
- 处理程序等待每个回调并修改标志
- 如果标志到达线程保持,做一些工作
当多个事件回调时,有可能多个事件循环线程将执行处理程序,因此存在作业将多次运行的竞争条件。如何避免?
任何解决方案都会得到认可。
【问题讨论】:
标签: asynchronous vert.x