namespace Deal.Modules.Pipeline.Application.Services;
///
/// Single-flight-замок ручной переклассификации
///
public sealed class ReclassifyGate : IDisposable
{
private readonly SemaphoreSlim _gate = new(initialCount: 1, maxCount: 1);
///
/// Пытается войти в критическую секцию без ожидания.
///
/// True — вход получен (вызывающий обязан вызвать ); false — проход уже идёт.
public bool TryEnter() => _gate.Wait(0);
///
/// Освобождает вход после завершения прохода.
///
public void Exit() => _gate.Release();
///
public void Dispose() => _gate.Dispose();
}