3
我具有由各個線程訪問的Queue<T>
字段。 Enequeue()
從多個線程稱爲每秒多次,同時有一個單線程執行Dequeue()
和Count
操作。System.Collections.Queue <T>,線程,鎖定和同步
我還一直在想很多關於這個到現在爲止,因爲我打它的「安全」和之前與該隊列的任何操作靜態物體上使用lock
。雖然目前沒有任何性能問題,但如果它們是多餘的,我想擺脫這些鎖。我的問題是:
- 因爲我永遠不會遍歷隊列,在這種情況下真的需要鎖嗎?我的意思是,當程序碰巧一個線程出現並且第二個線程同時在處出錯元素時程序會崩潰嗎?
- 應該我也許用
Queue.Synchronized()
得到的包裝,如果是這樣:會影響性能比原來的隊列?
感謝,'ConcurrentQueue'出現爲我工作的所有工作,沒有沉重的鎖。 –
avance70
2011-04-26 12:53:54
@ avance70 - 除非你已經進行了配置,否則我不會自動假設這裏的鎖是「沉重的」...... – 2011-04-26 13:09:57
我認爲我的鎖很好地實現,隻影響到幾個必要的行。但是,正如你所建議的'ConcurrentQueue'我在某處讀到它使用'System.Threading.Interlocked'操作,它比'lock' –
avance70
2011-04-26 13:21:49