Naz*_*zar 3 c# c++ multithreading
我试图将此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);
Run Code Online (Sandbox Code Playgroud)
在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);
Run Code Online (Sandbox Code Playgroud)
这根本就没必要.在C#中的lock声明转化为try/ finally,所以每当你退出块的锁将被释放,无论你如何退出块,所以就没有必要当你退出使用显式释放锁break路径.