ThreadStatic特性简介
ThreadStaticAttribute
在程序中,类的静态成员变量(c#:static;vb:shared),在使用时,会在该类的多个实例之间共享。
在多线程场合下,也不例外。有些读者或许会想到如何创建每个线程自己的静态变量呢,这里ThreadStaticAttribute就提供了一种十分简单的方法。
可以通过追加自定义特性“c#:[ThreadStatic];vb:<ThreadStatic>”的方法来实现。
具体可以参照下面的例子:
class Program {static void Main(string[] args) { Thread t1 = new Thread(new ThreadStart(ThreadProc)); Thread t2 = new Thread(new ThreadStart(ThreadProc)); t1.Name = "Thread1"; t2.Name = "THread2"; t1.Start(); t2.Start(); Console.WriteLine("Press Enter key to exit..."); Console.ReadLine(); } [ThreadStatic]static int ThreadStaticValue;static int StaticValue; static Random r = new Random(); public static void ThreadProc() { StaticValue = ThreadStaticValue = r.Next(1, 10);while(true) {if (Thread.CurrentThread.Name == "Thread1") { StaticValue++; ThreadStaticValue++; } Console.WriteLine("{0}: ThreadStatic:{1}; Static:{2}", Thread.CurrentThread.Name, ThreadStaticValue, StaticValue); Thread.Sleep(500); } } }
可以看到,代码中定义了两个静态变量,一个是被ThreadStatic特性修饰的ThreadStaticValue变量,还有一个就是一般的静态变量。
我们在程序中起了2个线程,用来查看实行的结果。
首先,我们使用随机数初始化了两个静态成员变量,然后线程1每过0.5秒把变量自增长1。
通过值的变化,我们就可以容易理解ThreadStatic的用途了。
参考资料:
msdn的说明
http://msdn.microsoft.com/en-us/library/system.threadstaticattribute.aspx
转载于:https://www.cnblogs.com/helloworldexcepition/archive/2012/01/08/2316398.html
ThreadStatic特性简介相关推荐
- python简述列表特征_python高级特性简介
Python中的五种特性:切片,迭代,列表生成式,生成器,迭代器. 切片 切片就相当于其他语言中的截断函数,取部分指定元素用的. L = list(range(100)) #利用切片取部分元素 pri ...
- Oracle11g新特性简介
转 Oracle 11g 新特性简介https://blog.csdn.net/tianlesoftware/article/details/5134819 Oracle 11g于2007年7月11 ...
- JDK8新特性简介、Lambda表达式、Stream流常用api介绍
JDK8新特性简介.Lambda表达式.Stream流常用api介绍 接口 Java1.8前接口中是不允许有普通方法的,在Java1.8后允许接口中有普通方法,只需要加上default关键字即可: J ...
- openGauss数据库共享存储特性简介
openGauss 3.1.1是openGauss 5.0.0 release版本的Preview版本,希望广大社区伙伴和开发者基于此版本进行场景化验证,提前发现问题并反馈社区,社区将在LTS版本发布 ...
- Java基础-各种集合类的特性简介
各种集合类的特性简介 集合类概述 集合中存储什么 不同集合对应不同数据结构 集合继承结构及特性简介 Map集合继承结构及特性简介 总结: 集合类概述 什么是集合?有什么用? 数组其实就是一个集合,集合 ...
- ECMAScript 2021(ES12)新特性简介
简介 ES12是ECMA协会在2021年6月发行的一个版本,因为是ECMAScript的第十二个版本,所以也称为ES12. ES12发行到现在已经有一个月了,那么ES12有些什么新特性和不一样的地方呢 ...
- haproxy的丰富特性简介
HaProxy系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1.简介 官方站点:http://www.haproxy.org hapro ...
- sql server版本特性简介、版本介绍简介
1.SQL Server 版本简介 1.1.sql server的版本信息 年 代 版 本 大版本号 1993年 SQL Server for Windows NT 4.21 1994年 ...
- ECMAScript 2019(ES10)新特性简介
简介 ES10是ECMA协会在2019年6月发行的一个版本,因为是ECMAScript的第十个版本,所以也称为ES10. 今天我们讲解一下ES10的新特性. ES10引入了2大特性和4个小的特性,我们 ...
- ECMAScript 2016(ES7)新特性简介
简介 自从ES6(ECMAScript 2015)在2015年发布以来,ECMAScript以每年一个版本的速度持续向前发展.到现在已经是ECMAScript 2020了. 每个版本都有一些新的特性, ...
最新文章
- 为什么不建议你用a.equals(b)判断对象相等
- Go goroutine理解
- 【数值分析】—— 对数函数、指数函数(数值稳定性)
- ES6的新特性(9)——对象的扩展
- python 逻辑回归_不会Python没问题!用Excel实现简单的逻辑回归!
- html表单有几部分组成,网页制作时表单由哪两部分组成
- Android6.0权限的处理
- 关于cmake与make
- 非常好用的离线地图手机app
- 虚拟机VMware的安装和Ubuntu安装过程
- 成都Java程序员培训毕业后什么水平
- 如何用EXCEL求一组数的方差…
- 向量空间 vector space
- Android/安卓 设置按钮点击效果
- 基于JSP的汽车配件销售管理系统
- 安装cadence软件到使用过程中遇到的问题和解决方法
- silverlight 学习笔记 (一):silverlight 能做什么
- element-ui:el-autocomplete实现搜索结果多次点击不关闭弹框
- 翻译-linux-5.1.2\Documentation\virtual\kvm\api.txt
- iiis环境安装php多个版本