簡體   English   中英

應該使用什么技術來處理asp.net緩存中的對象,以防止來自多個asp.net輔助線程訪問的問題?

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

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