36 lines
919 B
C#
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);
|
|
});
|
|
}
|
|
}
|