我可以从.NET中的并发线程读取和写入FIFO吗?

时间:2010-09-10 10:51:38

标签: .net multithreading concurrency queue fifo

我正在使用Queue<T>来缓存视频。我们的想法是用数据填充(Enqueue),开始播放(Dequeue)并在数据到达时不断填充。我可以从后台线程做回填部分吗?

2 个答案:

答案 0 :(得分:3)

听起来你正在寻找生产者/消费者队列。您可以使用Queue<T>执行此操作,但是您需要添加锁定以确保您不会同时从多个线程访问队列。

如果你使用的是.NET 4,那么使用IProducerConsumerCollection<T>BlockingCollection<T>并行扩展可以让这个更多变得更容易。

答案 1 :(得分:0)

当然,如果使用lock()或使用Monitor对象锁定对队列的访问权限,则可以。