У меня есть ограниченная блокирующая очередь в приложении, которое было написано несколько лет назад. Скажем, что реализация менее звездная, но она сработала. Однако у него есть некоторые проблемы с производительностью. Похоже, что .NET 4.0 BlockingCollection<T>
- это правильная замена, но мне нужно убедиться, что это фактически очередь. То есть, гарантируется ли это строго FIFO, если он используется в однопрофильной форме с одним потребителем?
В документации конкретно не говорится. Тема BlockingCollection говорит (в примечаниях):
BlockingCollection<T>
аналогичен данные традиционной блокировки структуры, за исключением того, что механизм хранения данных абстрагирован какIProducerConsumerCollection<T>
.
Но ничего конкретно не говорится о том, что вещи будут удалены в том же порядке, в котором они добавлены.
Кто-нибудь знает наверняка?