我可以让Dictionary<Thread, object>
存储线程的数据并使用Thread.CurrentThread来检索它吗?Thread.CurrentThread是否总是返回相同的实例?
5
A
回答
10
你可以,但你也需要同步(因为Dictionary<,>
不是线程安全的)。
替代方案:
ThreadStaticAttribute
ThreadLocal<T>
(.NET 4)
当然,使用字典在ThreadStaticAttibute
的一个好处是,你不必担心垃圾尽可能多,或者确实是黑魔法。如果您使用.NET 4,则ThreadLocal<T>
可能是您的最佳选择。
3
是的,你可以,如果你想访问其他线程的数据,但你应该首先看一下ThreadStaticAttribute或ThreadLocal,如果线程只需要看到他们自己的数据就好多了。
相关问题
- 1. Thread.currentThread()是否总是返回相同的实例?
- 2. 总是返回相同实例的类
- 3. 是否WindsorContainer.Resolve <T>()总是返回相同的实例?
- 4. Thread.currentThread()。getContextClassLoader()返回多个对象实例
- 5. SchedularFactory是否使用新方法返回相同的实例
- 6. canvas.getContext(“2d”)是否每次都返回相同的实例?
- 7. DateTime.ToString(“s”)是否总是返回相同的格式?
- 8. FlashScope.getCurrent(...)总是返回新的FlashScope实例
- 9. PetaPoco GetInstance()总是返回新的实例?
- 10. EntityManager.getReference它是否总是返回一个会话中的同一个实例?
- 11. Google App Engine datastore.get(key)是否总是返回相同的实体对象?
- 12. managedQuery总是返回相同的结果
- 13. java.nio.SocketChannel总是返回相同的数据
- 14. php filesize()总是返回相同的值
- 15. Random.Next总是返回相同的值
- 16. SimpleDateFormat总是返回相同的结果
- 17. Random.Next返回总是相同的值
- 18. localtimestamp总是返回相同的值
- 19. AVAudioSession总是返回相同的outputVolume
- 20. 函数总是返回相同的值
- 21. jQuery .selectable(),总是返回相同的ID?
- 22. Random.Next()总是返回相同的值
- 23. ExtractSURF总是返回相同的方向
- 24. boundingRectWithSize总是返回相同的CGRect
- 25. h2o.runif()总是返回相同的矢量
- 26. glReadPixels总是返回相同的值glClearColor
- 27. clEnqueueMapBuffer是否总是返回相同CL缓冲区的相同地址?
- 28. 实例变量总是返回零
- 29. QPluginLoader实例总是返回null
- 30. A *实现总是返回相同的值