Объект, отвечающий за глобальную блокировку кэшей между собой.
В отличии от AsyncLock, последующие вызовы ExecuteReaderAsync(FuncCancellationToken, ValueTask, CancellationToken) и ExecuteWriterAsync(FuncCancellationToken, ValueTask, CancellationToken) ниже по стеку будут выполняться в рамках уже взятой блокировки.
Рекомендуется использовать в методах, которые могут использовать другие кэши (например, GetAsyncT(FuncCancellationToken, ValueTaskT, FuncCancellationToken, ValueTaskT, Boolean, CancellationToken) при заполнении кэша или InvalidateLocalCacheAsync(TPayload) при сбрасывании локального кэша), для исключения ситуации, когда два разных кэша могут брать блокировку друг на друга.
public interface IGlobalCacheLockPublic Interface IGlobalCacheLockpublic interface class IGlobalCacheLocktype IGlobalCacheLock = interface end| ExecuteReaderAsync | Выполняет делегат в блокировке на чтение, при этом последующие вызовы ExecuteReaderAsync(FuncCancellationToken, ValueTask, CancellationToken) ниже по стеку будут выполняться в рамках уже взятой блокировки. |
| ExecuteWriterAsync | Выполняет делегат в блокировке на запись, при этом последующие вызовы ExecuteWriterAsync(FuncCancellationToken, ValueTask, CancellationToken) ниже по стеку будут выполняться в рамках уже взятой блокировки. |