public void TrySet_SetAgain_Failed() { var flag = new OnceFlag(); flag.TrySet(); Assert.IsFalse(flag.TrySet()); }
public async ValueTask DisposeAsync() { if (!m_flag.TrySet()) { return; } if (!m_router.TryGetTarget(out var router)) { return; } await router.DisposeCallback(m_registration); }
private async ValueTask DisposeAsync(bool disposing) { if (!m_flag.TrySet()) { return; } await m_locker.InternalUnlockAsync(); if (disposing) { GC.SuppressFinalize(this); } }
public void TrySet_InParallel_OnlyOneSetOk() { var flag = new OnceFlag(); var cnt = 0; Parallel.For(0, 10, (i) => { if (flag.TrySet()) { Interlocked.Increment(ref cnt); } }); Assert.AreEqual(1, cnt); }
public void TrySet_CreateAndSet_Ok() { var flag = new OnceFlag(); Assert.IsTrue(flag.TrySet()); }