Могу ли я читать и писать FIFO из параллельных потоков в .NET? - PullRequest
0 голосов
/ 10 сентября 2010

Я использую Queue<T> для кэширования видео.Идея состоит в том, чтобы заполнить его данными (Enqueue), начать играть (Dequeue) и непрерывно заполнять их по мере поступления данных.Можно ли сделать заполнение задней части из фоновой нити?

Ответы [ 2 ]

3 голосов
/ 10 сентября 2010

Звучит так, будто вы ищете очередь для продюсера / потребителя. Вы можете сделать это, используя Queue<T>, но вам нужно будет добавить блокировку, чтобы гарантировать, что вы никогда не получите доступ к очереди из нескольких потоков одновременно.

Если вы используете .NET 4, Parallel Extensions делает это намного проще с IProducerConsumerCollection<T> и BlockingCollection<T>, которые выполняют всю тяжелую работу для вас.

0 голосов
/ 10 сентября 2010

Конечно, вы можете, если заблокируете доступ к очереди с помощью lock () или с помощью объекта Monitor.

...