按照一篇好文章的指示,我遇到了我需要解决的问题。如何实现线程安全类队列的推送和弹出方法?
一个简单的锁就可以了。
var synchro = new object();
var queue = new Queue<int>();
lock(synchro)
{
queue.Enqueue(123); // Add to queue
}
lock(synchro)
{
var num = queue.Dequeue(); // Remove from queue
}
或者,您可以将ConcurrentQueue
与BlockingCollection
结合使用,但它不太灵活。例如,您无法安全地同时添加或删除多个项目。