【问题标题】:sharing singleton between tasks in ruby thor CLI在 ruby​​ thor CLI 中的任务之间共享单例
【发布时间】:2018-06-01 19:27:04
【问题描述】:

我正在实现一个 ruby​​ 命令行应用程序(交互式应用程序),并且我正在将 thor gem 用于 CLI。我将有三项任务,其中一项任务是加载外部文件并存储它。其他任务涉及操作存储的文件内容。我不想每次运行任务时都加载文件,应该是一次。我计划创建一个单例类来负责加载和存储文件。但我假设每个 thor 任务将在单独的进程上运行,并且不能共享创建的单例实例。我该如何进行此场景的设计?

【问题讨论】:

    标签: ruby-on-rails ruby rubygems command-line-interface thor


    【解决方案1】:

    理论上,您可以使用 UNIX 共享内存和某种允许访问这些系统调用的 gem 来做到这一点(有些在 this question 中有描述。

    但实际上,这无关紧要。一旦其中一项任务运行,即使在进程退出后,它读取的文件内容也应保留在操作系统的内存文件缓存中。当其他任务打开文件时,只要缓存在此期间没有被驱逐,它们将直接从内存中访问文件内容——或者至少是其中的一部分,而不会影响从磁盘读取的性能.

    这是一种情况,在基准测试表明需要更显着的解决方案之前,信任现有的缓存解决方案是最简单和最可靠的。

    【讨论】:

      猜你喜欢
      • 2012-12-17
      • 1970-01-01
      • 2013-12-01
      • 2015-09-11
      • 2020-12-05
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      相关资源
      最近更新 更多