我有一个 Queue<T> _q = new Queue<T>();
总是只有一个线程填充它:_q.Enqueue(msg);
总是只有一个线程使用它:_q.Dequeue();
我想在两个线程中都是无锁的。性能很重要,但安全是第一位的。
我需要制作 _q
一个ConcurrentQueue<T>
?
UPD
这可能很重要:
我不需要确保读取线程会在写入线程将其排入队列后立即成功将其出列。如果几个false
出队将被采取 - 没关系。
最佳答案
Do I need making _q a ConcurrentQueue
是的。队列不是线程安全的。
关于c# - Queue<T> 线程安全 : one writer, 一个读者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17420652/