[英]How can I lock in just one place
我有兩個線程和一個Queue<string>
。 第一個線程在循環中執行一些對性能至關重要的工作,並且它在每次迭代時檢查Queue<string>
,如果Queue
不為空,則抓取字符串。
現在,我需要第二個線程將字符串安全地放入Queue
。 當第一個線程對Queue
不執行任何操作時,只有第二個線程應等待 。 我不想使用lock
因為它將阻塞第一個線程,最終使它變慢。
我怎樣才能做到這一點? 我試圖用lock語句僅在第二線程中包圍Enqueue()
,但是ReSharper警告我:
該字段有時在同步塊內使用,有時不同步使用。
所以我想我做錯了。
不要使用Queue
或不使用lock
(例如,使用ReaderWriterLock
)。 在這種情況下,我建議使用ConcurrentQueue<T>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.