title: ConcurrentBag performance
body: <p>I've read in a lot of literature that ConcurrentBag is faster due to less synchronization overhead. Internally for each thread that adds items to it, it creates a separate data store, so it doesn't have to deal with synchronization. If I pull data out from it, it will pull it from the that particular thread's data store. If not present it will steal from other thread's queues. The part I don't understand is in most normal cases it wont be the same threads pulling out the data and stealing is inherently much slower than normal synchronization, then how can it be said that it is faster. </p>
  
  <p>E.g if I have a producer consumer pattern where i don't care about ordering with some producer threads adding data to ConcurrentBag and some other thread dequeing it, my performance would be significantly impacted as it would never be the same thread pulling the data out as the producer threads and yet I see the same example as an application. Am I missing something here?</p>