0
我可以定義lockObject像波紋管:可以將線程安全對象定義爲Readonly變量嗎?
private readonly object lockObject;
還是應該玷污這樣的:
private object lockObject;
我可以定義lockObject像波紋管:可以將線程安全對象定義爲Readonly變量嗎?
private readonly object lockObject;
還是應該玷污這樣的:
private object lockObject;
的99.99%的時間使用只讀
傳統上,你會希望有一個只讀對象作爲你的鎖,原因是鎖在變量lockObject
上的對象上完成,如果你沒有使它只讀,並且它可能會變成一個案例鎖被放置在多個線程的不同對象上。
繼承人,可能會導致問題,而沒有使用只讀鎖定
lockObject
lockObject
lockObject
,它與步驟1中的鎖不同對於0.01%的時間
這是因爲某些原因你想改變你的鎖,也就是說你正在控制的資源訪問被改變了,但是仍然有線程在上一個資源上工作,並且你認爲他們當前的操作對你的程序,並且你不想等他們改變鎖定。 這又帶有警告,你可能不應該這樣做。
如果在初始化後永遠不需要寫入字段,那麼將其定義爲只讀。一個鎖對象將是一個不應該改變的事情的好例子。 –
@GlorinOakenfoot謝謝,但是.net框架需要寫鎖對象嗎? – Fred
但是你需要*創建*對象。通常你會寫:'private readonly object lockObject = new object();' – xanatos