Например, в C # .NET оператор блокировки эквивалентен:
Monitor.Enter(object);
try
{
// Your code here...
}
finally
{
Monitor.Exit(object);
}
Однако имейте в виду, что Monitor также может Wait()
и Pulse()
, которые часто полезны в сложных ситуациях многопоточности.
Edit:
В более поздних версиях .NET Framework это было изменено на:
bool lockTaken = false;
try
{
Monitor.Enter(object, ref lockTaken);
// Your code here...
}
finally
{
if (lockTaken)
{
Monitor.Exit(object);
}
}