title: Why does Puma create multiple PIDs if its multi-thread instead of multi-process?
body: <p>Why does Puma create multiple PIDs if its multi-threaded?</p>
  
  <p>I thought the multiple threads would exist inside the same process.</p>
  
  <p>When starting Puma locally:</p>
  
  <pre><code>=&gt; Booting Puma
  =&gt; Rails 5.0.0.1 application starting in development on http://localhost:3000
  =&gt; Run `rails server -h` for more startup options
  [22095] Puma starting in cluster mode...
  [22095] * Version 3.6.0 (ruby 2.2.2-p95), codename: Sleepy Sunday Serenity
  [22095] * Min threads: 1, max threads: 1
  [22095] * Environment: development
  [22095] * Process workers: 2
  [22095] * Preloading application
  [22095] * Listening on tcp://localhost:3000
  [22095] Use Ctrl-C to stop
  [22095] - Worker 0 (pid: 22183) booted, phase: 0
  [22095] - Worker 1 (pid: 22184) booted, phase: 0
  </code></pre>
  
  <p>When running <code>ps aux | grep puma</code>:</p>
  
  <pre><code>me  22184  ... puma: cluster worker 1: 22095 [app]    
  me  22183  ... puma:  cluster worker 0: 22095 [app] 
  me  22095  ... puma 3.6.0 (tcp://localhost:3000) [app]   
  me  22289  ... grep puma
  </code></pre>
  
  <p>I've been learning about threads vs processes, and I thought that a thread is a "path of execution inside a process", so this struck me as confusing.</p>