gpt4 book ai didi

c# - 为什么我们使用非静态属性来锁定非静态字段?

转载 作者:太空宇宙 更新时间:2023-11-03 22:50:02 24 4
gpt4 key购买 nike

在 C# 中,我们对静态字段使用静态锁,对非静态字段使用非静态锁。为什么它比对非静态字段使用静态锁更好?像这样:

public class A{
long variable = 0;
static object sync = new object();
void Increment(){
lock (sync){variable++;}
}
}

最佳答案

不对非静态字段使用static 锁的主要原因很简单,这样您就不会得到不必要的 冲突。如果该字段位于不同的对象上,那么它们通常可以安全地分别进行突变 - 因此不需要两个线程必须相互阻塞(如果您使用 static 锁,就会发生这种情况,并且两个线程正在接触不同的对象)。

就我个人而言,我很想只使用 Interlocked.Increment(ref variable); :)

关于c# - 为什么我们使用非静态属性来锁定非静态字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47818002/

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