gpt4 book ai didi

c# - 防止方法同时从不同线程执行

转载 作者:太空狗 更新时间:2023-10-29 22:33:33 24 4
gpt4 key购买 nike

防止方法同时执行两次的唯一方法是使用 lock 语句,我是否正确?

private object lockMethod = new object();

public void Method() {
lock (lockMethod) {
// work
}
}

public void FromThread1() {
Method();
}

public void FromThread2() {
Method();
}

当然我也可以使用 MethodImpl(MethodImplOptions.Synchronized) 几乎是一样的。

还有其他技术吗?

最佳答案

Am I correct that the only method to prevent method to execute twice at the same time is using lock statement?

不,但这是“标准”方式,而且可能是最好的方式。也就是说,通常您会使用锁来同步对特定数据 的访问,而不是对整个方法的访问。锁定整个方法可能会导致不必要的阻塞。

至于其他方法,System.Threading命名空间包含许多用于各种形式的同步的其他类型,包括 ReaderWriterLockSlimSemaphoreMutexMonitor 类 (这是 lock 内部使用的)等。所有这些都提供了各种同步数据的方法,尽管每种方法都适用于不同的场景。在这种情况下,lock 是合适的方法。

关于c# - 防止方法同时从不同线程执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10989206/

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