类的静态字段在类的实例中是共享的。多个线程修改实例字段的值在对其它线程来说是可见的,这也是clr默认的行为。对静态字段添加ThreadStaticAttribute标记可以改变这种默认的行为。

ThreadStaticAttribute

指示静态字段的值对于每个线程都是唯一的。用 ThreadStaticAttribute 标记的 static 字段不在线程之间共享。每个执行线程都有单独的字段实例,并且独立地设置及获取该字段的值。如果在不同的线程中访问该字段,则该字段将包含不同的值。

[ThreadStatic]
public static int _field;
public static int _field2;
// local variable
new Thread(() => {
for (int x = ; x < ; x++) {
_field++;
_field2++;
//Console.WriteLine("Thread A: {0}", _field);
Console.WriteLine("Thread A2: {0}", _field2);
}
}).Start();
new Thread(() => {
for (int x = ; x < ; x++) {
_field++;
_field2++;
//Console.WriteLine("Thread B: {0}", _field);
Console.WriteLine("Thread B2: {0}", _field2);
}
}).Start();

分析

具有ThreadStatic标记的静态变量,在每个线程中都有自己的副本。

而一般静态变量在进程之间共享的。

最新文章

  1. 更改pip源至国内镜像,显著提升下载速度(转载)
  2. 【Leafletjs】2.添加marker到地图
  3. php如何判断远程文件是否存在
  4. Ubuntu 13.10 安装 ia32-lib
  5. The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.问题解决
  6. Unity中2D和UGUI图集的理解与使用
  7. js,css压缩工具
  8. 【Slickflow学习】.NET开源工作流项目转换(二)
  9. 让ie9之前的版本支持canvas
  10. CodeIgniter开发实际案例-新闻网站【转】
  11. JavaWeb总结(八)—EL表达式
  12. Vue.js 介绍入门
  13. iOS有关图片处理的总结 (四)------图片的饱和度,亮度,对照度。
  14. BZOJ 3295: [Cqoi2011]动态逆序对 [CDQ分治]
  15. [Abp vNext 源码分析] - 文章目录
  16. CPU的概念
  17. Linux命令:dirs
  18. runners
  19. jdk8系列一、jdk8 Lamda表达式语法、接口的默认方法和静态方法、supplier用法
  20. Linux在bash history当中添加timestamp

热门文章

  1. 用CSS 实现 非浮动元素的 水平居中/垂直居中/水平垂直居中
  2. Maven dependencies說明
  3. 在vscode中进行nodejs服务端代码调试(代码修改自动重启服务端)
  4. 关于https的五大误区
  5. Java链接Redis时出现 “ERR Client sent AUTH, but no password is set”
  6. 003_创建simulink文件
  7. 学到了林海峰,武沛齐讲的Day17完-6 文件操作
  8. Mina入门级客户端程序实现telnet程序
  9. simcom7600ce-t LBS function
  10. 如何安全的从LVM中移除磁盘