为什么要在ThreadLocal上使用数据插槽?

下班后

比较未命名的数据插槽和ThreadLocal ...

MSDN只说

在.NET Framework 4中,可以使用System.Threading.ThreadLocal类创建线程本地对象,这些对象在第一次使用该对象时会被延迟初始化。有关更多信息,请参见惰性初始化。

如果我对懒惰的初始化感到满意,则ThreadLocal似乎是最佳选择……它使用起来更简单,不需要强制转换。选择另一种选择时,还需要考虑其他因素吗?

吉姆·米歇尔(Jim Mischel)

正如我在评论中所说,它ThreadLocal<T>是使用Thread Local Dataslots API实现的。您可以通过查看ThreadLocal源代码来确认这一点除非您有令人信服的理由可以在Windows API级别上工作,否则最好使用ThreadLocal<T>

选择一个很好的理由ThreadLocal<T>是,它确保为每个线程初始化该值。ThreadStatic不会这样做,并且线程本地数据插槽API的接口也必须为此专门编码。有关更多信息,请参见https://stackoverflow.com/a/18337158/56778

ThreadLocal<T>与延迟初始化一起使用您将省去很多痛苦。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

为什么要在堆栈上使用Deque?

来自分类Dev

为什么要在pbuilder上使用sbuild?

来自分类Dev

为什么要在memset上使用bzero?

来自分类Dev

为什么要在Dict上使用HashDict?

来自分类Dev

从数据仓库创建报表时,为什么需要在SQL上使用T-SQL?

来自分类Dev

什么是gvfs,为什么要在我的系统上使用它?

来自分类Dev

为什么要在void上使用int函数?

来自分类Java

为什么要在Java / Spring上使用Scala / Lift?

来自分类Javascript

为什么要在object.freeze上使用immutablejs?

来自分类Dev

为什么要在 [Align] 对齐上使用 [Expanded] / [Flexible] flex?

来自分类Dev

sudoedit:为什么要在sudo vi上使用它?

来自分类Dev

为什么要在诸如Postgres的RDBMS上使用Parquet

来自分类Dev

为什么要在结构上使用&符号?

来自分类Python

为什么要在easy_install上使用pip?

来自分类Dev

为什么要在多个 if 语句上使用 elif 和 else?

来自分类Python

为什么要在Google App Engine上使用Django?

来自分类Dev

为什么要在冻结的对象上使用Object#clone?

来自分类Dev

为什么我要在StatefulWidget上使用StatelessWidget?

来自分类Dev

为什么要在Keras上使用纯TensorFlow?

来自分类Dev

为什么要在FreeBSD内核上使用Debian 6?

来自分类Dev

为什么我需要在资源上使用.close()

来自分类Dev

为什么要使用虚拟插槽?

来自分类Dev

为什么 ThreadLocal.ThreadLocalMap 使用 Entry Array 而不是 Single Entry 来保存数据?

来自分类Dev

为什么要在主线程上订阅?

来自分类Dev

为什么要在小对象上同步?

来自分类Dev

什么时候以及为什么我们需要在bash上使用“ wait”命令?

来自分类Dev

当使用react-table时,为什么要在`ReactTable`上使用`useTable`

来自分类Dev

为什么要在AngularJS中使用$ onInit?

来自分类Dev

为什么要在golang中使用组合?

Related 相关文章

  1. 1

    为什么要在堆栈上使用Deque?

  2. 2

    为什么要在pbuilder上使用sbuild?

  3. 3

    为什么要在memset上使用bzero?

  4. 4

    为什么要在Dict上使用HashDict?

  5. 5

    从数据仓库创建报表时,为什么需要在SQL上使用T-SQL?

  6. 6

    什么是gvfs,为什么要在我的系统上使用它?

  7. 7

    为什么要在void上使用int函数?

  8. 8

    为什么要在Java / Spring上使用Scala / Lift?

  9. 9

    为什么要在object.freeze上使用immutablejs?

  10. 10

    为什么要在 [Align] 对齐上使用 [Expanded] / [Flexible] flex?

  11. 11

    sudoedit:为什么要在sudo vi上使用它?

  12. 12

    为什么要在诸如Postgres的RDBMS上使用Parquet

  13. 13

    为什么要在结构上使用&符号?

  14. 14

    为什么要在easy_install上使用pip?

  15. 15

    为什么要在多个 if 语句上使用 elif 和 else?

  16. 16

    为什么要在Google App Engine上使用Django?

  17. 17

    为什么要在冻结的对象上使用Object#clone?

  18. 18

    为什么我要在StatefulWidget上使用StatelessWidget?

  19. 19

    为什么要在Keras上使用纯TensorFlow?

  20. 20

    为什么要在FreeBSD内核上使用Debian 6?

  21. 21

    为什么我需要在资源上使用.close()

  22. 22

    为什么要使用虚拟插槽?

  23. 23

    为什么 ThreadLocal.ThreadLocalMap 使用 Entry Array 而不是 Single Entry 来保存数据?

  24. 24

    为什么要在主线程上订阅?

  25. 25

    为什么要在小对象上同步?

  26. 26

    什么时候以及为什么我们需要在bash上使用“ wait”命令?

  27. 27

    当使用react-table时,为什么要在`ReactTable`上使用`useTable`

  28. 28

    为什么要在AngularJS中使用$ onInit?

  29. 29

    为什么要在golang中使用组合?

热门标签

归档