如何设置当前线程的共享数据?

     具体一点说就是在当前线程中设置指定数据并在当前线程内共享该数据,最主要的问题是该数据仅仅共享于当前的线程,线程间只会取得属于该线程的共享数据,举 个例子来说明这样的应用,最典型的示例就是HttpContext.Current这个应用,这个对象是在Web中经常用到的一个对象,通过一个静态方法 获得属于当前的HttpContext对象,Web的每一个Request请求都是单独的处于不同线程中,那么他们之间的Request等对象都是仅限于 当前线程中使用,通过这种方法使得各个Request之间互相独立,互相不受到影响,编写程序也非常的方便,这样的应用在Win32平台也是非常之多,下面来讲讲那么它在.NET下是如何实现的。
     首先第一个用到的类是Thread这个类,第二个类是LocalDataStoreSlot,是一个数据槽类,通过Thread这个类的两个静态方法使得他们联系在一起,分别是SetData (LocalDataStoreSlot slot, 
   Object data)和GetData (LocalDataStoreSlot slot).

引用下MS的示例来详细说明一下:

Code

类似这样的应用被广泛应用的很多框架上,是一项很简单实用的方法。

虽然很简单,但是实际上很多人都直接使用HashTable来实现类似的应用,其实MS已经帮我们准备好了很多东西,欢迎大家拍砖。

原文地址:https://www.cnblogs.com/zhujiechang/p/1325828.html