小编Par*_*rth的帖子

Rails - puma 工作人员的并发问题

我有一个 Puma 服务器,配置为使用两个工作线程,每个工作线程有 16 个线程。并config.threadsafe!禁用允许使用 puma 的线程。

现在我有一个代码,我怀疑它没有使用线程安全,即使我已经Mutex在其中用作常量。我希望这段代码一次仅由一个 puma 线程执行,以避免并发问题,并使用Mutex它。

现在,我的问题是,

  1. Mutex在多个工作人员上使用 puma 线程时是否可以注入线程安全?据我了解,工作线程是一个单独的进程,因此互斥锁不起作用。
  2. 如果互斥体不能按上述方式工作,那么在特定代码上启用线程安全的解决方案是什么?

代码示例

class MyService
  ...
  MUTEX = Mutex.new     
  ...

  def initialize
   ...
  end

  def doTask
    MUTEX.synchronize do
      ...
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby thread-safety ruby-on-rails-3 puma

5
推荐指数
1
解决办法
1459
查看次数

标签 统计

puma ×1

ruby ×1

ruby-on-rails-3 ×1

thread-safety ×1