[英]what techniques should be used to handle objects in asp.net Cache to prevent problems from multiple asp.net worker threads access?
因為asp.net包含多個同時執行的線程。
因此,如果2個線程訪問我從asp.net httpcontext緩存獲取的對象(簡單或復雜)。
如果這兩個主題試圖同時修改/讀取對象,這是否會導致該對象的狀態問題?
那我應該采取什么樣的預防措施呢?
例如,我想也許在處理對象時將其鎖定? (這會導致性能問題嗎?)
或者當我從緩存中檢索某些對象時,應該從中創建一個副本嗎?
還是我根本不需要擔心這個問題?
謝謝
在5年以上的ASP.NET開發項目中,我從未遇到過這種擔心的情況。
話雖這么說...您閱讀任何物品當然都不會有問題。 如果您有一個要經常修改的對象,為什么它要在緩存中開始? 如果您不需要經常修改它,那么鎖定對象不會是性能問題。
您需要根據問題的情況來決定這一點,一種適合所有解決方案的尺寸在這里不起作用。 如果僅讀取數據,則不會出現線程問題。 如果您經常向其中寫入數據,則使用緩存對其毫無意義。 如果有點混雜,並且緩存確實對性能有幫助,那么您要么需要訴諸普通的線程同步技術(例如,讀者寫鎖),要么使您的對象不可變,而對對象的更改總是會創建一個新對象。 這種選擇會導致其自身的線程問題,因為新對象必須隨后替換緩存中的舊對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.