一个SDET  
每个人都有梦想

使用thread local storage可以将数据存储在线程的数据槽(data slot)中。数据只能被此线程访问。

 

 1class Data
 2{
 3  //Application data is stored here
 4}

 5
 6Data appData = new Data();
 7
 8Thread.SetData(Thread.GetNamedDataSlot("MyTestSlot"), appData);
 9
10Data tempData = (Data)Thread.GetData(Thread.GetNamedDataSlot("MyTestSlot"));
11
12Thread.FreeNamedDataSlot("MyTestSlot");
13

l   方法GetNamedDataSlot查找以"MyTestSlot"命名的数据槽(data slot),如果不存在,则返回一个新建立的slot。如果slot已经被创建则返回,并不会有错误代码或异常提醒此slot已被创建。使用方法AllocateNamedDataSlot可以创建一个以"MyTestSlot"命名的slot,如果此名称的slot已经创建则抛出ArgumentException异常。

注:需要注意的一点是GetNamedDataSlotAllocateNamedDataSlot会在所有线程上建立指定名称的 slot

l   方法SetData在当前线程的指定slot中存储数据。

public static void SetData (LocalDataStoreSlot slot,Object data)

l   方法GetData获得当前线程指定名称slot中的数据。

l   方法FreeNamedDataSlot会释放指定名称的slot,但是需要注意的是它会释放所有线程上指定名称的slot。解决的方法就是不要调用FreeNamedDataSlot方法,在线程结束后他所拥有的所有的data slot都回被自动释放。

posted on 2007-07-06 21:43  Ken_Cui  阅读(533)  评论(0)    收藏  举报