I have a bounded blocking queue in an application that was written several years ago. Let's just say that the implementation is less than stellar, but it's worked. However, it has some performance problems. It looks like the .NET 4.0 BlockingCollection<T>
is the right replacement, but I need to make sure that it is actually a queue. That is, is it guaranteed to be strictly FIFO if used in a single-producer, single-consumer fashion?
The documentation doesn't specifically say. The BlockingCollection topic does say (in the Remarks):
BlockingCollection<T>
is similar to a traditional blocking queue data structure, except that the underlying data storage mechanism is abstracted away as anIProducerConsumerCollection<T>
.
But nothing specifically says that things will be removed in the same order they're added.
Anybody know for sure?
See Question&Answers more detail:os