Beispiel #1
0
        protected void balanceQueues(object sender, JobEmptyQueueArgs e)
        {
            if (totalCount() < refillThreshold)
            {
                e.Quit = true;
                return;
            }

            var newQueue = new MaybeQueue <Action <int> >();

            for (var i = 0; i < processorCount; i++)
            {
                while (queue.Dequeue(i).If(out var action))
                {
                    newQueue.Enqueue(action);
                }
            }

            queue.ResetCurrentAffinity();
            while (newQueue.Dequeue().If(out var item))
            {
                queue.Enqueue(item);
            }

            e.Quit = false;
        }
Beispiel #2
0
        public void Add(Value value)
        {
            var iterator = new NSIterator(value.PossibleGenerator().FlatMap(g => g, () => new NSOneItemGenerator(value)));

            iterators.Enqueue(iterator);
        }
Beispiel #3
0
        public void Add(Value value)
        {
            var iterator = new NSIterator(value.PossibleGenerator().DefaultTo(() => new NSOneItemGenerator(value)));

            iterators.Enqueue(iterator);
        }