如何在不同的线程中同时使用队列队列

vru*_*ali 5 .net c#

我如何使用c#中的队列?我想要一个将数据排入队列的线程,另一个线程将数据从队列中取出.那些线程应该同时运行.

可能吗?

Pau*_*ulB 8

如果您需要线程安全使用ConcurrentQueue<T>.


Yau*_*aur 0

一种可能的实现是使用具有单独的读和写指针的环形缓冲区。在每个读/写操作中,您将相反的指针(必须是线程安全的)复制到本地上下文中,然后执行批量读取或写入。

每次读取或写入时,您都会更新指针并脉冲事件。

如果读取或写入线程到达没有更多工作要做的位置,则在重新读取适当的指针之前等待其他线程事件。