gpt4 book ai didi

c# - 锁定每个属性

转载 作者:行者123 更新时间:2023-11-30 18:17:24 34 4
gpt4 key购买 nike

我正在查看一些我不明白其意义的代码。

private object myProperty_lock = new Object();
private SomeType myProperty_backing;

public SomeType MyProperty
{
get { lock(myProperty_lock) { return myProperty_backing; } }
set { lock(myProperty_lock) { myProperty_backing = value; } }
}
  • 此模式在同一个类中多次使用。
  • 每次使用此模式时,都会有一个新的锁对象。 (它不是所有属性的共享锁对象。)
  • 使用的类型是引用类型和原语。 (没有非原始结构。)

这段代码有什么作用吗?引用和原语是原子分配的,所以我们不需要在分配过程中防止线程切换。锁定对象未在其他任何地方使用,因此那里没有保护。

是否存在内存障碍?我曾假设方法内部的锁不会影响该方法外部的事物。

最佳答案

代码在方法内部这一事实并不意味着内存屏障。因此,您怀疑这些锁是为了保证新的读取内存,这可能是对的。

当然,它也可以添加,因为添加它的人是 cargo cult programmer并且不明白为什么要这样做,只是因为他看到了一个代码示例才这样做。

关于c# - 锁定每个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43876885/

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