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

单机如何共享线程池?

刘高驰
2023-03-14

我注意到一些web框架(如Play Framework)允许您配置多个不同大小的线程池(线程池中的线程数)。假设我们在单核的单机中运行这个游戏。拥有多个线程池不会有很大的开销吗?

共有1个答案

尉迟京
2023-03-14

Play当然允许您配置多个执行上下文(相当于一个线程池),但这并不意味着您应该这样做,特别是如果您有一台具有单个核心的机器。默认情况下,为了实现高吞吐量,配置应该保持低(接近核数)--当然,假设所有操作都是非阻塞的。如果您有阻塞操作,想法是让它们在单独的执行上下文上运行,否则会导致缺省的请求处理ExecutionContext耗尽(正在播放的请求处理管道在缺省的ExecutionContext上运行,缺省的ExecutionContext被限制在少量线程中)。

至于当线程多于核心时会发生什么,以及当线程多于核心时会发生什么,这在很大程度上取决于您正在运行的操作(关于I/O等)。如果您只执行CPU绑定的操作,那么每个核心一个线程应该是最优的。另见本题。

 类似资料:
  • 问题内容: 我正在尝试编写一个多线程Python应用程序,其中在线程之间共享一个SQlite连接。我无法使它正常工作。真正的应用程序是一个小巧的Web服务器,但是以下简单代码演示了我的问题。 为了成功运行下面的示例代码,我需要进行哪些更改? 当我在THREAD_COUNT设置为1的情况下运行此程序时,它可以正常工作,并且数据库已按预期进行更新(即,字母“ X”被添加到SectorGroup列的文本

  • 用例 我有一个基于gRPC Guice的服务应用程序,其中对于特定的调用,代码流如下所示:

  • PHP 非常流行,很少有服务器没有安装 PHP 的,因而有很多共享主机,不过需要注意服务器上的 PHP 是否是最新 版本。共享主机允许多个开发者把自己的网站部署在同一台服务器上面,这样的好处是费用非常便宜,坏处是你不知道将和哪些 网站共享主机,因此需要仔细考虑机器负载和安全问题。如果项目预算允许的话,避免使用共享主机是上策。

  • 问题内容: 我想在共享主机上部署Angular2应用程序。我尝试通过ssh传输文件,但该应用程序未运行。我想有些事情可以做,例如在本地服务。 遵循哪些步骤?我在互联网上找不到它们:/ 谢谢 编辑 我有一个非常简单的应用程序,其中包含一些路由和组件。自从我根据需要调用REST API以来,没有服务器端代码。 问题答案: 在本地开发计算机上执行或 这会将您的应用程序构建到dist文件夹中。将dist文

  • 问题内容: 我们遇到了适用于多线程的方案。 在主线程中,执行一些逻辑操作并更新数据库,在某种程度上,它将调用另一个服务来更新数据库,该服务在另一个线程中运行。 我们希望两个线程共享同一个事务,这意味着任何一个线程中的任何一个操作都将失败,那么另一个线程中的该操作也将被回滚。 但是工作了几天,我发现一些帖子说JTA不支持多线程。当前我们使用Bitronix作为JTA提供者,有没有人知道Bitroni

  • 我试图在Java中实现一个多线程服务器,服务器为每个连接到它的客户机生成一个新线程。通信在一个类中执行,该类实现可运行接口,并将套接字描述符作为输入。当一个新客户端连接时,我会生成一个带有套接字描述符编号的新线程。 我需要在服务器上维护两个ArrayList,每当新客户端加入系统时都会更新(带有客户端发送的一些数据)。如何在运行在不同线程中的多个客户端之间完成这种共享ArrayList的行为?