我有一個線程服務器應用程序,存儲List<Item> dataList
。有一個寫入線程可以修改,添加和刪除列表中的項目,以及從該列表讀取的多個線程。這段代碼需要什麼樣的同步?
需要什麼樣的同步來確保寫操作按照被調用的順序發生,併爲讀操作提供最大性能,即如果寫操作繁忙,讀操作必須在讀操作前提供先前的值。
我目前使用ReaderWriterLockSlim
是因爲它具有獨立的讀寫鎖定功能,但感覺好像有很多昂貴的開銷調用ReadLocks是不必要的,因爲我想要的只是爲了保證寫入順序?
據我瞭解,閱讀引用類型和值類型應提供原子訪問,所以鎖定可能沒有必要?
性能是一個大問題,它似乎像我同步結構可以通過頗有幾分改進的優化。
訪問經由直接的方法的項屬性不大於使用間接指針不同。同樣的事情,生產者線程仍然可以改變項目的屬性。 –