gpt4 book ai didi

c# - Monitor.TryEnter 和 lock() 是否一起工作?

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

我正在查看已创建的代码,它在一个方法调用中使用 TryEnter 并在其他方法调用中锁定。所以,像这样:

private readonly object xmppLock = new object();

void f1()
{
if (Monitor.TryEnter(xmppLock))
{
try
{
// Do stuff
}
finally
{
Monitor.Exit(xmppLock);
}
}
}

void f2()
{
lock(xmppLock)
{
// Do stuff
}
}

这样可以吗?

最佳答案

lock 只是 Monitor.Enter 的语法糖,所以是的,它可以正常工作。

The Visual Basic SyncLock and C# lock statements use Monitor.Enter to take the lock and Monitor.Exit to release it. The advantage of using the language statements is that everything in the lock or SyncLock block is included in a Try statement.

(也就是说,锁定诸如 Type 对象之类的公共(public)对象被认为是一种糟糕的形式。)

关于c# - Monitor.TryEnter 和 lock() 是否一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8184975/

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