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特性简介相关推荐

  1. python简述列表特征_python高级特性简介

    Python中的五种特性:切片,迭代,列表生成式,生成器,迭代器. 切片 切片就相当于其他语言中的截断函数,取部分指定元素用的. L = list(range(100)) #利用切片取部分元素 pri ...

  2. Oracle11g新特性简介

    转 Oracle 11g 新特性简介https://blog.csdn.net/tianlesoftware/article/details/5134819  Oracle 11g于2007年7月11 ...

  3. JDK8新特性简介、Lambda表达式、Stream流常用api介绍

    JDK8新特性简介.Lambda表达式.Stream流常用api介绍 接口 Java1.8前接口中是不允许有普通方法的,在Java1.8后允许接口中有普通方法,只需要加上default关键字即可: J ...

  4. openGauss数据库共享存储特性简介

    openGauss 3.1.1是openGauss 5.0.0 release版本的Preview版本,希望广大社区伙伴和开发者基于此版本进行场景化验证,提前发现问题并反馈社区,社区将在LTS版本发布 ...

  5. Java基础-各种集合类的特性简介

    各种集合类的特性简介 集合类概述 集合中存储什么 不同集合对应不同数据结构 集合继承结构及特性简介 Map集合继承结构及特性简介 总结: 集合类概述 什么是集合?有什么用? 数组其实就是一个集合,集合 ...

  6. ECMAScript 2021(ES12)新特性简介

    简介 ES12是ECMA协会在2021年6月发行的一个版本,因为是ECMAScript的第十二个版本,所以也称为ES12. ES12发行到现在已经有一个月了,那么ES12有些什么新特性和不一样的地方呢 ...

  7. haproxy的丰富特性简介

    HaProxy系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1.简介 官方站点:http://www.haproxy.org hapro ...

  8. sql server版本特性简介、版本介绍简介

    1.SQL Server 版本简介 1.1.sql server的版本信息 年    代 版    本 大版本号 1993年 SQL Server for Windows NT 4.21 1994年 ...

  9. ECMAScript 2019(ES10)新特性简介

    简介 ES10是ECMA协会在2019年6月发行的一个版本,因为是ECMAScript的第十个版本,所以也称为ES10. 今天我们讲解一下ES10的新特性. ES10引入了2大特性和4个小的特性,我们 ...

  10. ECMAScript 2016(ES7)新特性简介

    简介 自从ES6(ECMAScript 2015)在2015年发布以来,ECMAScript以每年一个版本的速度持续向前发展.到现在已经是ECMAScript 2020了. 每个版本都有一些新的特性, ...

最新文章

  1. 为什么不建议你用a.equals(b)判断对象相等
  2. Go goroutine理解
  3. 【数值分析】—— 对数函数、指数函数(数值稳定性)
  4. ES6的新特性(9)——对象的扩展
  5. python 逻辑回归_不会Python没问题!用Excel实现简单的逻辑回归!
  6. html表单有几部分组成,网页制作时表单由哪两部分组成
  7. Android6.0权限的处理
  8. 关于cmake与make
  9. 非常好用的离线地图手机app
  10. 虚拟机VMware的安装和Ubuntu安装过程
  11. 成都Java程序员培训毕业后什么水平
  12. 如何用EXCEL求一组数的方差…
  13. 向量空间 vector space
  14. Android/安卓 设置按钮点击效果
  15. 基于JSP的汽车配件销售管理系统
  16. 安装cadence软件到使用过程中遇到的问题和解决方法
  17. silverlight 学习笔记 (一):silverlight 能做什么
  18. element-ui:el-autocomplete实现搜索结果多次点击不关闭弹框
  19. 翻译-linux-5.1.2\Documentation\virtual\kvm\api.txt
  20. iiis环境安装php多个版本

热门文章

  1. spark reduce与reduceByKey的区别
  2. Hive metastore入门
  3. springboot~让我习惯了TDD的开发模式
  4. 20172303 2017-2018-2 《程序设计与数据结构》实验五报告
  5. Ogre3D的GOOF的场景编辑器截图
  6. 苹果商店近期审核的问题
  7. Java 开源报表制作
  8. configure: error: Cannot find OpenSSL's libraries
  9. hadoop22---wait,notify
  10. eFrameWork学习笔记-eList