ConcurrentBag Vs List

后端 未结 5 1369
粉色の甜心
粉色の甜心 2020-12-08 15:18

What is the advantage of using a ConcurrentBag(Of MyType) against just using a List(Of MyType)? The MSDN page on the CB states that

ConcurrentBag(Of

5条回答
  •  伪装坚强ぢ
    2020-12-08 16:12

    Internally, the ConcurrentBag is implemented using several different Lists, one for each writing thread.

    What that statement you quoted means is that, when reading from the bag, it will prioritize the list created for that thread. Meaning, it will first check the list for that thread before risking contention on another thread's list.

    This way it can minimize lock contention when multiple threads are both reading and writing. When the reading thread doesn't have a list, or its list is empty, it has to lock a list assigned to a different thread. But, if you have multiple threads all reading from and writing to their own list, then you won't ever have lock contention.

提交回复
热议问题