Files
caliverse_server/ServerCore/Sync/SynchronizerHelper.cs
2025-05-01 07:20:41 +09:00

36 lines
919 B
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Text;
using System.Threading.Tasks;
namespace ServerCore;
public static class SynchronizerHelper
{
public static async Task<IDisposable> tryReadLockAsync(this ReaderWriterLockSlim rwLock)
{
ArgumentNullReferenceCheckHelper.throwIfNull(rwLock, () => $"rwLock is null !!!");
return await Task.Run(() =>
{
rwLock.EnterReadLock();
return (IDisposable) new Unlocker(rwLock, false);
});
}
public static async Task<IDisposable> tryWriteLockAsync(this ReaderWriterLockSlim rwLock)
{
ArgumentNullReferenceCheckHelper.throwIfNull(rwLock, () => $"rwLock is null !!!");
return await Task.Run(() =>
{
rwLock.EnterWriteLock();
return (IDisposable) new Unlocker(rwLock, true);
});
}
}