0
按照来自article的说明,我遇到了需要解决的问题。如何实现线程安全类队列的push和pop方法?如何使用c实现线程安全类队列的push和pop方法#
按照来自article的说明,我遇到了需要解决的问题。如何实现线程安全类队列的push和pop方法?如何使用c实现线程安全类队列的push和pop方法#
一个简单的锁定会很好。
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
,但它不够灵活。例如,您不能安全地同时添加或删除多个项目。
@Neijwiert因为*从个人经验来看*,往往不够。它没有提供足够的功能*(从.NET 4.6开始)*,如果您需要它,当您需要重写它时,您将处于一个受到伤害的世界。更好地开始灵活。 –
使用[BlockingCollection](https://msdn.microsoft.com/en-us/library/dd267312(v = vs.110).aspx)? – Neijwiert
或(对于.Net 4.5+)使用['BufferBlock'](https://msdn.microsoft.com/en-us/library/hh228601%28v=vs.110%29.aspx)? –