gpt4 book ai didi

c# - 如何解锁锁定括号内的线程

转载 作者:太空狗 更新时间:2023-10-29 20:02:56 25 4
gpt4 key购买 nike

我正在尝试将此 C++ 代码转换为 C#:

do{
if (Node->NextNode == NULL) WaitForSingleObject(pThis->_Event, INFINITE);
_critSect.Lock();
if (Node->NextNode == NULL && !bRunning )
{
_critSect.Unlock(); // can explicitly unlock here
break;
}
_critSect.Unlock();
}while (Node->NextNode == NULL);

在C++中,我可以显式解锁线程,但C#只有一个括号。如何在破解之前在下面的代码中添加“解锁”功能?

do{
if (Node->NextNode == null) DataQueueEvent.WaitOne();
lock (thisLock)
{
if (Node->NextNode == null && !bRunning)
// need to unlock here!!!
break;
}
} while (Node->NextNode == null);

最佳答案

完全没有必要。在 C# 中,lock 语句转换为 try/finally,因此无论您如何退出 block ,都会释放锁您退出 block ,因此在使用 break 路径退出时无需显式释放锁。

关于c# - 如何解锁锁定括号内的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33284857/

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