gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:05:04 27 4
gpt4 key购买 nike

我觉得我不应该关心线程安全访问/写入

public static int MyVar = 12;

在 ASP .NET 中。

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

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

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

我的推测错了?

编辑

我理解这取决于我的情况,但这不是问题的重点。问题是:可以在不使用 lock 关键字的情况下使用(静态 int)变量编写线程安全代码吗?

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

最佳答案

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

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

关于asp.net - 我应该关心 ASP .NET 中静态 int (4 字节)变量的线程安全吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1964253/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com