title: Consume from Queue with multiple threads/tasks
body: <p>I have a producer that gets users from a resource and places them into a ConcurrentQueue, then What I want to do is using multiple consumers and process all users and get their information from another resource.</p>
  
  <pre><code>  public void Populate(IEnumerable&lt;Users&gt; users){
       _queue.Enqueue(users);
       // here single threaded
    }
  
    public void Process(){
       // here i want this to be processed by multiple consumers
       // say multiple threads so that I can finish processing them.
    }
  </code></pre>
  
  <p>My question is, should i use thread? task? ThreadPool? </p>
  
  <p>I have seen this question: <a href="https://stackoverflow.com/questions/4661760/c-sharp-equivalent-for-java-executorservice-newsinglethreadexecutor-or-how-t">C# equivalent for Java ExecutorService.newSingleThreadExecutor(), or: how to serialize mulithreaded access to a resource</a></p>