C# [ThreadStatic] 标记静态字段对多线程执行的影响
2024-08-27 09:16:40
类的静态字段在类的实例中是共享的。多个线程修改实例字段的值在对其它线程来说是可见的,这也是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标记的静态变量,在每个线程中都有自己的副本。
而一般静态变量在进程之间共享的。
最新文章
- 更改pip源至国内镜像,显著提升下载速度(转载)
- 【Leafletjs】2.添加marker到地图
- php如何判断远程文件是否存在
- Ubuntu 13.10 安装 ia32-lib
- The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.问题解决
- Unity中2D和UGUI图集的理解与使用
- js,css压缩工具
- 【Slickflow学习】.NET开源工作流项目转换(二)
- 让ie9之前的版本支持canvas
- CodeIgniter开发实际案例-新闻网站【转】
- JavaWeb总结(八)—EL表达式
- Vue.js 介绍入门
- iOS有关图片处理的总结 (四)------图片的饱和度,亮度,对照度。
- BZOJ 3295: [Cqoi2011]动态逆序对 [CDQ分治]
- [Abp vNext 源码分析] - 文章目录
- CPU的概念
- Linux命令:dirs
- runners
- jdk8系列一、jdk8 Lamda表达式语法、接口的默认方法和静态方法、supplier用法
- Linux在bash history当中添加timestamp
热门文章
- 用CSS 实现 非浮动元素的 水平居中/垂直居中/水平垂直居中
- Maven dependencies說明
- 在vscode中进行nodejs服务端代码调试(代码修改自动重启服务端)
- 关于https的五大误区
- Java链接Redis时出现 “ERR Client sent AUTH, but no password is set”
- 003_创建simulink文件
- 学到了林海峰,武沛齐讲的Day17完-6 文件操作
- Mina入门级客户端程序实现telnet程序
- simcom7600ce-t LBS function
- 如何安全的从LVM中移除磁盘