Пример #1
0
        /// <summary>Adds a waiter for a <see cref="Select"/></summary>
        void ISelectable.AddWaiter(Waiter waiter)
        {
            lock (_items)
            {
                Queue.Enqueue(ref _selects, waiter);

                // if there values waiting to be received then signal the queue to wake up
                if (!_items.IsEmpty)
                {
                    waiter.SetResult(true);
                }
            }
        }
Пример #2
0
        /// <summary>Adds a waiter for a <see cref="Select"/></summary>
        void ISelectable.AddWaiter(Waiter waiter)
        {
            lock (_gate)
            {
                Queue.Enqueue(ref _selects, waiter);

                // if there is a waiting sender then signal the select to wake up
                if (_senders.Head != null)
                {
                    waiter.SetResult(true);
                }
            }
        }