首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > VB.NET > .NET Quick Tip: TLS in .NET
【标  题】:.NET Quick Tip: TLS in .NET
【关键字】:.NET,Quick,Tip,TLS,in,.NET
【来  源】:http://blog.joycode.com/jgtm2000/archive/2004/01/13/11379.aspx

.NET Quick Tip: TLS in .NET

  TLS(线程局部存储,thread local storage)在类库和多线程应用开发中是个有用的东东,在很多语言和工具中都有很好的支持(如Visual C++里面的__declspec(thread)Delphi中的threadvar等等,Win32 API中也有对应的Tls族函数)。有些刚接触.NET的朋友就开始抱怨了,说在管制环境下没有TLS了,得自己写了。其实不然,虽然在C#/VB.NET等语言中没有直接的关键字或语句来声明TLS,但是CLR通过定制属性更直观的支持着这一特性,这个属性就是ThreadStaticAttribute

 

  如果你希望一个静态成员(static in C#, Shared in VB.NET)对于不同的线程(更准确的说,app-domain与线程的组合)有不同的值(也即TLS的行为),则只需要为其设置ThreadStatic属性就可以了,无需作任何编程处理(当然这是declarative的做法,相应的programmatic方法也有,具体的可以参见Thread.AllocateDataSlotThread.AllocateNamedDataSlot方法,或检索.NET SDK Documentation Index中的TLS条目)。

 

  文档中提醒一点要注意的是,任何访问线程局部静态成员的代码,只要不是运行在访问该成员所在类的第一个线程上时,都应该将该成员看作是null引用(引用类型)或默认初始值(值类型)。也就是说,不要依赖于类的构造器去初始化ThreadStatic成员,原因是显而易见的。

 

  另外,在ASP.NET等多线程环境中使用TLS成员也要慎重,因为这些线程的生命周期不是由你来控制的,它们是从HttpRuntime管理的线程池中被重用的,因此在一次请求中使用的TLS成员有可能在另一次毫不相关的请求中被得到或修改(除非这就是你希望的效果)。如果希望使用请求相关的存储环境,可以考虑使用HttpContext.Current实例的Items集合(该集合在Server.Transfer等情况下可用于在同一次请求的不同页面间传递和共享状态)。

A Taste of AOP from Solving Problems with OOP and Design Patterns (Part I):【上一篇】
Object.GetType() is NOT a virtual method as you may think...:【下一篇】
【相关文章】
  • A Taste of AOP from Solving Problems with OOP and Design Patterns (Part I)
  • XP: To be a Good Programmer, You'd Find a Pair Programmer First!
  • .NET Quick Tip: Runtime Type Conversion for Enumeration
  • Unit Testing with .NET Quiz: Adaptable Mock Objects?
  • Inspired people, inspiring community!
  • .NET Trick: Is it C# or JScript?!
  • VS 2005 Beta 1 Refresh with Team System "is being" available now...
  • Positive Thinking vs. Negative Thinking
  • Oracle 10G 真是奇怪(windows 2003)
  • InstallShield 10.5
  • 【随机文章】
  • 反感
  • 是画面比音乐慢?,不是音乐比画面慢耶
  • the problem of rmiregistry
  • 让AutoCAD启动为指定模板
  • 菜鸟手动清除灰鸽子
  • 实例学习PHP之表单处理篇
  • Linux学习路线
  • 图像的插入与处理
  • DirectShow帮助文档学习笔记之DirectShow Event Notification Codes
  • windowsMobile设备上显示图片
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.