gpt4 book ai didi

C# Lock 语法 - 2 个问题

转载 作者:行者123 更新时间:2023-11-30 13:12:23 25 4
gpt4 key购买 nike

我可以在 Lock 中使用字符串作为储物柜吗?

lock("something")

如果它只有一行,我可以不用大括号进行锁定吗?

lock("something") foo();

最佳答案

1) 是的,字符串(通常)是 interned(默认情况下,感谢@Eric),因此相同 "something" 的任何实例都将指向相同的对象,因此你会没事的。 这是非常的错误做法,因为其他人(例如在另一个库中)可能会锁定您的字符串,从而导致死锁的可能性。参见此处:Using string as a lock to do thread synchronization

你应该这样做:

private static readonly object mutex = new object();

lock(mutex)
{
//....
}

2) 是的,与所有语句相同。你拥有的任何东西*:

{
// One line
}

可能只是

// One line

*几乎所有内容,请参阅@LukeH 的 catch block 示例,它需要大括号。

关于C# Lock 语法 - 2 个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6937342/

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