gpt4 book ai didi

C# 线程锁定和使用锁对象;锁定对象的正确范围应该是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 17:15:53 27 4
gpt4 key购买 nike

使用声明为类字段的锁对象与本地范围有区别吗?

例如:在下面的例子中使用lockObject1lockObject2有区别吗?

public class Test()
{
private Object lockObject1 = new Object();

public void FooBar()
{
lock(lockObject1)
{
//Thread safe area 1
}

var lockObject2 = new Object();
lock(lockObject2)
{
//Thread safe area 2
}
}
}

似乎大多数示例似乎总是对选定锁定对象的作用域的重要性不以为然。

最佳答案

本地锁对象不会真正提供任何线程安全,因为运行 FooBar 的多个线程将各自拥有自己的对象,而不是共享一个用于锁定的对象。 (遗憾的是,在我提出问题并及时更正之前,我已经在生产代码中看到了这个问题。)

关于C# 线程锁定和使用锁对象;锁定对象的正确范围应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5321251/

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