gpt4 book ai didi

c# - 锁定 C# 开关盒的首选方式

转载 作者:行者123 更新时间:2023-11-30 21:00:28 24 4
gpt4 key购买 nike

internal static void ExecuteCommand(NLO nlo)
{
switch (nlo.action)
{
//synchronize each method in case
case (NLO.Actions.SET):
swSet(nlo);
break;
case (NLO.Actions.ADD):
swAdd(nlo);
break;
default:
throw new System.Exception("Error");
//break;
}
return;
}

我想锁定,这样每个方法 swSetswAdd 都能够并行运行,但是锁定 swSet 不能并行运行与自身相同,对于 swAdd

是最简单的方法来锁定每个案例或锁定方法本身或拥有 [MethodImpl(MethodImplOptions.Synchronized)]
关于方法?

最后一个解决方案会锁定所有方法吗?

最佳答案

[MethodImpl(MethodImplOptions.Synchronized)] 没有过多的记录,但通常会对同一类型的所有此类方法使用相同的锁对象; from MSDN :

Only one thread can execute in any of the instance functions, and only one thread can execute in any of a class's static functions.

坦率地说,我从未发现该属性有用。在您的情况下,听起来您需要为这两种方法单独锁定:

private static readonly object setLock = new object(), addLock = new object();

static void swAdd(...) {
lock(addLock) {...}
}
static void swSet(...) {
lock(setLock) {...}
}

关于c# - 锁定 C# 开关盒的首选方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14872910/

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