Я пытаюсь понять цель BlockingCollection в контексте новых Parallel Stacks на .NET 4.
Документация msdn гласит:
BlockingCollection используется как оболочка для экземпляра IProducerConsumerCollection, позволяя удалять попытки из коллекции блокировать до тех пор, пока данные не будут удалены. Аналогично, BlockingCollection может быть создан для обеспечения верхней границы количества элементов данных, разрешенных в классе IProducerConsumerCollection; попытки добавления коллекции могут блокироваться до тех пор, пока не будет доступно пространство для хранения добавленных элементов.
Однако, когда я смотрю на реализацию некоторых IProducerConsumerCollection, таких как ConcurrentQueue, я вижу, что они предоставляют блокировку, потокобезопасную реализацию. Итак, зачем нужен механизм блокировки, который обеспечивает BlockingCollection? Все примеры в msdn показывают, используя эти коллекции через оболочку BlockingCollection, каковы проблемы с использованием этих коллекций напрямую? Какое преимущество дает использование BlockingCollection?