假設我有以下鎖定私人對象或哈希集本身?
HashSet<string> hsWaitingToBeFetched = new HashSet<string>();
我現在做的多線程編程的HashSet的,所以我必須以同步對象
我可以用這兩種方式鎖定這個鎖定此是否有任何性能差異?
private Object lockHashset = new Object();
lock(lockHashset)
{
// do stuff here
}
或
lock(hsWaitingToBeFetched)
{
// do stuff here
}
如果您需要知道哪個更高性能,您應該考慮嘗試兩者並進行測量。請注意,從程序正確性角度而不是性能角度來看,選擇鎖定哪個對象更是一個問題。 – dlev
散列設置是否爲私有?並且是否存在散列集*本身*發生變化的情況?也就是說,你是否改變了引用這個集合的變量的值,或者你只是改變集合的內容? –