我在考慮使用具有應用程序級範圍的HttpContext.Current.Cache
。我知道Cache對象是線程安全的,但我不明白的是緩存對象不是線程安全的,因此如何可以安全地使用和修改它們的線程?應用程序級緩存對象應該是線程安全的嗎?
1
A
回答
1
確保置於緩存中的對象是線程安全的是您自己的責任。
4
根據MSDN文章Cache
類型是線程安全的但緩存not thread safe
對象可能會導致意外錯誤。
下面是Thread-safe cache libraries for .NET和對象緩存(共享點)MSDN文章非常好的螺紋(計算器) - Object Caching Techniques
0
如果不同的線程中要使用,並同時修改緩存的對象,那麼你將需要一些應用級協議。這可以簡單如lock(cachedObject) {....}
如果您可以確定緩存中的內容一次只能由單個線程訪問,或者它不能被修改(因爲它是不可變的),那麼您不需要任何東西進一步。
HttpContext.Current.Cache
是什麼意思是線程安全的是多線程可以同時獲取和放入東西。所以如果你想在多個鍵之間進行一些協調,那麼你將需要一些更高級別的鎖定。
相關問題
- 1. ClassLoader應該是線程安全的嗎?
- 2. 類應該是線程安全的嗎?
- 3. 存儲在sessionScope中的對象應該是線程安全的嗎?
- 4. 這個「單例」應該在ASP.NET應用程序中是線程安全的嗎?
- 5. python線程安全對象緩存
- 6. EF對象是線程安全的嗎?
- 7. 應用程序空閒 - 這是線程安全的嗎?
- 8. 線程安全應用程序中的線程安全
- 9. Microsoft企業庫緩存應用程序塊不是線程安全的?
- 10. 應該釋放線程對象嗎? C#
- 11. 單線程應用程序是否線程安全
- 12. 線程安全,應用程序設計
- 13. 這是incrementAndGet線程安全的嗎?這似乎從誒緩存拉對象
- 14. CodeIgniter中的應用程序級緩存
- 15. 存儲在線程安全集合線程中的對象是否安全?
- 16. 應該在Coldfusion的應用程序/會話級別創建重用對象嗎?
- 17. 緩存Android應用程序數據,總是使用getFilesDir()安全嗎?
- 18. 在線安全的web應用程序
- 19. C++流對象線程安全嗎?
- 20. 這會使對象線程安全嗎?
- 21. 我們應該緩存原始對象還是緩存對象?
- 22. iPhone應用程序需要線程安全嗎?
- 23. Python Tornado聊天演示應用程序線程安全嗎?
- 24. 是Django文件系統緩存線程安全嗎?它是跨進程嗎?
- 25. C++線程安全對象緩存的設計選項
- 26. 創建一次性對象的線程安全緩存
- 27. 什麼是線程安全的對象
- 28. java線程安全:線程安全嗎?
- 29. 安全離線html5/js-應用程序?
- 30. 鎖(objlocker)是否使該對象線程安全的應用程序廣泛?並且靜態成員是否自動線程安全?
沒錯。任何一個對象都應該是線程安全的,或者應該將它們全部替換爲新實例(將它們作爲不可變對象進行威脅)。最好的辦法是*不*更新緩存中的部分對象。只需使用不可變對象的只讀列表。 – Steven
爲什麼downvote? –