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)? –