antiantiswearingbot/Jetsparrow.Aasb/Extensions/ReaderWriterLockSlimExtensions.cs
2023-03-14 00:24:14 +03:00

24 lines
754 B
C#

using System.Threading;
namespace Jetsparrow.Aasb;
public readonly ref struct ReadLockToken
{
ReaderWriterLockSlim Lock { get; }
public ReadLockToken(ReaderWriterLockSlim l) => (Lock = l).EnterReadLock();
public void Dispose() => Lock.ExitReadLock();
}
public readonly ref struct WriteLockToken
{
ReaderWriterLockSlim Lock { get; }
public WriteLockToken(ReaderWriterLockSlim l) => (Lock = l).EnterWriteLock();
public void Dispose() => Lock.ExitWriteLock();
}
public static class ReaderWriterLockSlimExtensions
{
public static ReadLockToken GetReadLockToken(this ReaderWriterLockSlim l) => new ReadLockToken(l);
public static WriteLockToken GetWriteLockToken(this ReaderWriterLockSlim l) => new WriteLockToken(l);
}