title: Do I need to spawn multiple Go web server instances to fully utilize my CPU?
body: <p>I'm not exactly sure how to ask this question but in my experience with NodeJS, which has a single thread and a process queue to manage async functions, you need to run an instance of your web server on seperate processes for each CPU thread - then load balance between each instance. </p>
  
  <p>You can end up with 4 instances of the same software running, serving on 4 separate ports, being exposed on one port via the load balancer.</p>
  
  <p>Typically, you'd use a service like PM2 to manage this process for you.</p>
  
  <p>From my (basic) understanding, goroutines are not threads so my natural thinking wonders if that means Go needs to be run in the same way, multiple processes spanning for each CPU thread.</p>
  
  <p>Is that the case? Or if I write a REST API using something like Gin, will Go automatically scale across CPU threads as the demand increases?</p>