2016-03-02 54 views

回答

1

一个简单的锁定会很好。

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 
} 

或者,你可以结合使用ConcurrentQueueBlockingCollection,但它不够灵活。例如,您不能安全地同时添加或删除多个项目。

+1

@Neijwiert因为*从个人经验来看*,往往不够。它没有提供足够的功能*(从.NET 4.6开始)*,如果您需要它,当您需要重写它时,您将处于一个受到伤害的世界。更好地开始灵活。 –