gpt4 book ai didi

thread-safety - vert.x 中的多实例 verticle 是线程安全的

转载 作者:行者123 更新时间:2023-12-02 03:22:11 24 4
gpt4 key购买 nike

据我了解,在 vert.x 中,每次我们不需要在处理程序中编写线程安全性时,默认 Verticle 都会在同一事件循环中运行。

例如,如果我有一个运行 HttpServer 的 Verticle -

public class HttpServerVerticle extends AbstractVerticle {
@Override
public void start() throws Exception {
vertx.createHttpServer().requestHandler(req -> {
req.response().putHeader("content-type", "text/html").end("
<html><body><h1>Hello from vert.x!</h1></body></html>");
}).listen(8080);
}

}

保证在任何时候,我的请求处理程序都会在 2 个事件循环中被调用两次(针对 2 个不同的请求)。因此,我不必关心请求处理程序中的线程安全。

现在,如果我正在运行 HttpServer verticle 的多个实例 -

DeploymentOptions deploymentOptions = new 
DeploymentOptions().setWorker(false).setInstances(10);

vertx.deployVerticle("com.....HttpServerVerticle", deploymentOptions);

我需要注意线程安全吗?多个请求处理程序(最大 = 10)可能会并行运行吗?

最佳答案

在这种情况下,您得到的是 10 个 verticle,HTTP 请求将以循环方式在这 10 个 verticle 之间分派(dispatch)。每个 verticle 将被分配给一个事件循环,您保持相同的线程安全保证。

关于thread-safety - vert.x 中的多实例 verticle 是线程安全的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54436144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com