线程本地存储区:线程相关的静态字段和数据槽,高手进来解释一下 有没有人能解释一下,看了MSDN但看不懂。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Windows核心编程。里面线程部分说的比较详细俺解释不了 .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. 数据槽那个没用过, 线程静态字段就是用ThreadStaticAttribute来修饰的,代表为线程内静态变量,比如Singleton模式class Factory{ [ThreadStatic] //如果不加该属性是所有线程都共享__product字段,加了属性该单例模式就是针对某个线程了 static readonly object __product = new object();} 查了一下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来保持跨越不相交的方法调用的数据,而不是强制用户代码维护和传递特殊的上下文对象。 谢谢fuadam提供的资料,如果还有更好的资料也可以传到这上面来 求生成唯一ID号的一个算法! c#掉c++回调 怎样把多个项目合并? Winform中的WebBrowser随机报错 怎样在。NET2003C#中给菜单项前面加图标? this.DataGrid1.DataKeys[(int)e.Item.ItemIndex]出错了, 数据加密或压缩 如何用c#做资源管理器? 哪个对象可以加HTML内容返回 IHTMLDocument2对象? struct不能定义无参的构造函数,那么new出来的时候是怎么初始化的? 求一组提取url信息的正则表达式 api测试代码谁有,c#的,或者相关文档,谢谢
俺解释不了
(.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.
{
[ThreadStatic] //如果不加该属性是所有线程都共享__product字段,加了属性该单例模式就是针对某个线程了
static readonly object __product = new object();
}