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

我可以从.NET中的并发线程读取和写入FIFO吗?,.net,multithreading,concurrency,queue,fifo,.net,Multithreading,Concurrency,Queue,Fifo,我正在使用队列缓存视频。这个想法是用数据(Enqueue),开始播放(Dequeue),并在数据到达时不断填充。我可以从后台线程执行填充部分吗?当然可以,如果您使用lock()或Monitor对象锁定对队列的访问权限 当然可以,如果您使用lock()或使用Monitor对象锁定对队列的访问权 听起来您正在寻找生产者/消费者队列。您可以使用Queue执行此操作,但需要添加锁定,以确保永远不会同时从多个线程访问队列 如果您使用的是.NET 4,那么并行扩展将使这一点变得更加容易,并为您完成所有繁重的

我正在使用
队列
缓存视频。这个想法是用数据(
Enqueue
),开始播放(
Dequeue
),并在数据到达时不断填充。我可以从后台线程执行填充部分吗?

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

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

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


如果您使用的是.NET 4,那么并行扩展将使这一点变得更加容易,并为您完成所有繁重的工作。

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


如果您使用的是.NET 4,并行扩展会使这一点变得更容易,并且会为您完成所有艰巨的工作。

什么让您认为您不能?嗯,它是同一个对象,我不知道它的内部工作。因此,您真正的问题是是否需要锁定它。如果你能编写代码,它编译并运行,那么你就能做到。什么让你认为你做不到?嗯,它是同一个对象,我不知道它的内部工作。所以你真正的问题是你是否需要锁定它。如果您可以编写代码并编译和运行,那么您就可以做到。@sztomi:使用锁和等待/通知创建生产者/消费者队列并不难。这需要一定的小心:)当然,我知道:)。问题是我是否必须上锁。但很高兴知道他们在4中实现了这一点,即使我现在不能使用它,所以谢谢。@sztomi:使用锁和等待/通知创建生产者/消费者队列并不难。这需要一定的小心:)当然,我知道:)。问题是我是否必须上锁。但很高兴知道他们在4中实现了这一点,即使我现在不能使用它,所以谢谢。