📄 lockhelper.cs
字号:
namespace NCindy.Util
{
using System;
using System.Threading;
public static class LockHelper
{
public static ValueTypeWrapper<LockCookie> SafeAcquireWriterLock(ReaderWriterLock readerWriterlock, int timeout)
{
ValueTypeWrapper<LockCookie> empty = ValueTypeWrapper<LockCookie>.Empty;
if (readerWriterlock.IsReaderLockHeld && !readerWriterlock.IsWriterLockHeld)
{
return new ValueTypeWrapper<LockCookie>(readerWriterlock.UpgradeToWriterLock(timeout));
}
readerWriterlock.AcquireWriterLock(timeout);
return empty;
}
public static void SafeReleaseWriterLock(ReaderWriterLock readerWriterlock, ValueTypeWrapper<LockCookie> lockCookie)
{
if (readerWriterlock.IsWriterLockHeld)
{
if (ValueTypeWrapper<LockCookie>.Empty == lockCookie)
{
readerWriterlock.ReleaseWriterLock();
}
else
{
LockCookie cookie = lockCookie.Value;
readerWriterlock.DowngradeFromWriterLock(ref cookie);
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -