Гарантирован ли порядок данных очереди BlockingCollection, когда данные добавляются несколькими потоками?

Я использую очередь, реализованную классом BlockingCollection, для реализации очереди модели производитель-потребитель.

У меня есть несколько потоков, добавляющих элементы в указанном порядке (только для каждого из потоков), и один поток, извлекающий из него элементы.

Меня не волнует порядок добавления элементов между разными потоками, но я ожидаю, что элементы, добавляемые каждым из потоков, будут в том порядке, в котором они были добавлены.

Гарантирует ли это класс BlockingCollection? Я гуглил, но не нашел четкого ответа на свой вопрос.


person Justin    schedule 26.07.2018    source источник
comment
BlockingCollection заключает в себе другой тип соединения. Вы явно предоставляете его в своем конструкторе? Если да, то посмотрите на его гарантии. Если нет, он будет использовать ConcurrentQueue — так что посмотрите на гарантии этого типа.   -  person Damien_The_Unbeliever    schedule 26.07.2018
comment
Да, я предоставил CocurrentQueue. Это должно гарантировать порядок элементов, если каждый поток, так как это FIFO .. я прав?   -  person Justin    schedule 26.07.2018


Ответы (1)