有没有人能解释一下,看了MSDN但看不懂。

解决方案 »

  1.   

    Windows核心编程。里面线程部分说的比较详细
    俺解释不了
      

  2.   

    .Net forum is not a good place to answer your question.
    (.Net has a concept of soft thread and the local data storage could have different meaning)I would suggest post your question in the VC forum.
      

  3.   

    数据槽那个没用过, 线程静态字段就是用ThreadStaticAttribute来修饰的,代表为线程内静态变量,比如Singleton模式class Factory
    {
       [ThreadStatic]                                   //如果不加该属性是所有线程都共享__product字段,加了属性该单例模式就是针对某个线程了
       static readonly object __product = new object();
    }
      

  4.   

    查了一下TLS这东西我是没用过不知道具体在什么地方必须用,给你一段书上的解释为了开始使用TLS,必须首先为每个唯一的要存储的数据分配新的存储槽。这会分配一个结构,所有的托管线程都使用这个结构。采用两种静态方法完成这一点:Thread.AllocateDataSlot方法或者AllocateNameDataSlot方法。每个方法返回一个LocalDataStoreSlot对象,作为用于检索和存储这个存储槽中的数据的键,使用命名的存储槽可以在以后用GetNameDataSlot方法查找存储槽的键,而使用未命名的存储槽则需要一直保存返回的LocalDataStoreSlot。只有一个存储槽可以具有给定的名称:任何添加重复键的尝试都将产生异常。在存储槽中读写数据由Thread的GetData和SetData静态方法完成:object GetData(LocalDataStoreSlot slot);void SetData(LocalDataStoreSlot slot, object data);如果应用程序不再需要使用存储槽,那么调用FreeNamedDataSlot将释放命名的TLS存储槽以及任何和它相联系的资源。例如,这段代码使用一个未命名的存储槽:LocalDataStoreSlot slot = Thread.AllocateDataSlot();// ...Thread.SetData(slot, 63);//...int slotValue = (int)Thread.GetData(slot);这在存储线程范围的上下文时会很方便,并且不需要向必须访问数据的每个方法传递大量参数。此外,一些库可以用TLS来保持跨越不相交的方法调用的数据,而不是强制用户代码维护和传递特殊的上下文对象。
      

  5.   

    谢谢fuadam提供的资料,如果还有更好的资料也可以传到这上面来