我可以讓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 *實現總是返回相同的值