我在考虑使用具有应用程序级范围的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. python线程安全对象缓存
- 3. 这个“单例”应该在ASP.NET应用程序中是线程安全的吗?
- 4. 线程安全应用程序中的线程安全
- 5. Microsoft企业库缓存应用程序块不是线程安全的?
- 6. 应该释放线程对象吗? C#
- 7. 单线程应用程序是否线程安全
- 8. 这是incrementAndGet线程安全的吗?这似乎从诶缓存拉对象
- 9. 存储在线程安全集合线程中的对象是否安全?
- 10. 在线安全的web应用程序
- 11. 这会使对象线程安全吗?
- 12. 我们应该缓存原始对象还是缓存对象?
- 13. Python Tornado聊天演示应用程序线程安全吗?
- 14. iPhone应用程序需要线程安全吗?
- 15. C++线程安全对象缓存的设计选项
- 16. 是Django文件系统缓存线程安全吗?它是跨进程吗?
- 17. 什么是线程安全的对象
- 18. 安全离线html5/js-应用程序?
- 19. 锁(objlocker)是否使该对象线程安全的应用程序广泛?并且静态成员是否自动线程安全?
- 20. 我们应该关注JSF托管bean的线程安全吗?
- 21. 是DatagramSocket.send线程安全吗?
- 22. 是TcpClient.Available线程安全吗?
- 23. 线程安全(是吗?)
- 24. 是unique_ptr线程安全吗?
- 25. 是System.DirectoryServices.AccountManagement.GroupPrincipal线程安全吗?
- 26. 是sqlite.swift线程安全吗?
- 27. 是DocumentBuilder.parse()线程安全吗?
- 28. 是Microsoft.Practices.EnterpriseLibrary.Data.Database.SetParameterValue线程安全吗?
- 29. 是长线程安全吗?
- 30. 是javax.sql.DataSource线程安全吗?
没错。任何一个对象都应该是线程安全的,或者应该将它们全部替换为新实例(将它们作为不可变对象进行威胁)。最好的办法是*不*更新缓存中的部分对象。只需使用不可变对象的只读列表。 – Steven
为什么downvote? –