9 writes to _continuation
System.Threading.Channels (9)
System\Threading\Channels\AsyncOperation.cs (9)
108_continuation = pooled ? s_availableSentinel : null; 209if (Volatile.Read(ref _continuation) is not null || 210Interlocked.CompareExchange(ref _continuation, s_completedSentinel, null) is not null) 279_continuation = s_completedSentinel; 290thisRef._continuation = s_completedSentinel; 361Action<object?>? prevContinuation = Interlocked.CompareExchange(ref _continuation, continuation, null); 473Volatile.Write(ref _continuation, s_availableSentinel); // only after fetching all needed data 518Volatile.Write(ref _continuation, s_availableSentinel); // only after fetching all needed data 530if (ReferenceEquals(Interlocked.CompareExchange(ref _continuation, null, s_availableSentinel), s_availableSentinel))
7 references to _continuation
System.Threading.Channels (7)
System\Threading\Channels\AsyncOperation.cs (7)
76/// <summary>State object to be passed to <see cref="_continuation"/>.</summary> 142internal bool IsCompleted => ReferenceEquals(_continuation, s_completedSentinel); 212Debug.Assert(_continuation != s_completedSentinel, $"The continuation was the completion sentinel."); 213Debug.Assert(_continuation != s_availableSentinel, $"The continuation was the available sentinel."); 267Debug.Assert(_continuation is not null); 278Action<object?> c = _continuation!; 289Action<object?> c = thisRef._continuation!;