public Task GetLockAsync(long key)
{
lock (_syncLock)
{
Semaphore nodeSyncLock;
if (!_locks.TryGetValue(key, out nodeSyncLock))
{
nodeSyncLock = new Semaphore(1, 1);
_locks[key] = nodeSyncLock;
}
nodeSyncLock.WaitOne();
}
return Task.Factory.StartNew(() => { });
}