Быстрая и лучшая техника производителя/потребителя BlockingCollection против параллельной очереди

Im, использующий Generic.Queue в С# 3.0 и Monitor.Enter, подождите, выйдите для ожидания перед тем, как использовать очередь (подождите, пока элемент будет выставлен в очередь). Теперь im переместится на С# 4.

Может кто-нибудь подскажет мне, какой из них быстро и лучше всего, чтобы избежать блокировок.

BlockingCollection vs concurrentQueue или что-то еще...

Примечание. Я не хочу ограничивать свой продюсер

Спасибо заранее.

Ответ 1

BlockingCollection и ConcurrentQueue есть именно по этой причине. Я сомневаюсь, что вы найдете что-нибудь лучше или проще в использовании. Команда параллельных расширений знает свои вещи:)

Просто быстрая проверка версий - вы определенно используете .NET 4, а не только С# 4? (Например, вы могли бы использовать Visual Studio 2010 и, таким образом, С# 4, но все же предназначались для .NET 3.5, и в этом случае вы не могли бы использовать параллельные расширения.)

Вы также можете начать исследование Асинхронный шаблон на основе задач, TPL Dataflow и функции async/await для С# 5... Очевидно, вы еще не можете их использовать, но это не так. 't больно знать, что происходит.