簡體   English   中英

我怎么只能鎖在一個地方

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM