加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 我应该关心ASP .NET中的静态int(4字节)变量的线程安

发布时间:2020-12-16 07:31:03 所属栏目:asp.Net 来源:网络整理
导读:我觉得我不应该关心线程安全访问/写入 public static int MyVar = 12; 在ASP .NET中. 我从各种用户线程读取/写入此变量.我们假设这个变量将存储某个按钮/链接的点击次数. 我的理论是没有线程可以同时读/写这个变量.它只是一个4字节的简单变量. 我确实关心线
我觉得我不应该关心线程安全访问/写入

public static int MyVar = 12;

在ASP .NET中.

我从各种用户线程读取/写入此变量.我们假设这个变量将存储某个按钮/链接的点击次数.

我的理论是没有线程可以同时读/写这个变量.它只是一个4字节的简单变量.

我确实关心线程安全,但仅适用于参考对象和List实例或需要更多周期来读取/更新的其他类型.

我的推定错了吗?

编辑

我理解这取决于我的情景,但不是问题的关键.问题是:在不使用lock关键字的情况下,使用(static int)变量编写线程安全代码是正确的吗?

编写正确的代码是我的问题.答案似乎是:是的,如果您编写正确而简单的代码,而不是太复杂,您可以创建线程安全函数而无需使用lock关键字.

解决方法

如果一个线程只是设置值而另一个线程读取该值,则不需要锁定;读写是原子的.但是如果多个线程可能正在更新它并且还在读取它以进行更新(例如,增量),那么你肯定需要某种同步.如果只有一个线程即使是增量也会更新它,那么我认为不需要同步.

编辑(三年后)可能还需要将volatile关键字添加到声明中,以确保值的读取始终获得最新值(假设在应用程序中很重要).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读