Exemple #1
0
        protected TaskCollection(string name, int initialSize)
        {
            _name         = name;
            _listOfStacks = new FasterList <StructFriendlyStack>((uint)initialSize);
            var buffer = _listOfStacks.ToArrayFast();

            for (int i = 0; i < initialSize; i++)
            {
                buffer[i] = new StructFriendlyStack(1);
            }
        }
        protected TaskCollection(int initialSize)
        {
            _currentTask = new CollectionTask(this);

            _listOfStacks = new FasterList <StructFriendlyStack>(initialSize);
            var buffer = _listOfStacks.ToArrayFast();

            for (int i = 0; i < initialSize; i++)
            {
                buffer[i] = new StructFriendlyStack(1);
            }
        }
        public void Add(T enumerator)
        {
            var buffer = _listOfStacks.ToArrayFast();
            var count  = _listOfStacks.Count;

            if (count < buffer.Length && buffer[count].isValid())
            {
                buffer[count].Clear();
                buffer[count].Push(enumerator);

                _listOfStacks.ReuseOneSlot();
            }
            else
            {
                var stack = new StructFriendlyStack(_INITIAL_STACK_SIZE);
                _listOfStacks.AddRef(ref stack);
                buffer = _listOfStacks.ToArrayFast();
                buffer[_listOfStacks.Count - 1].Push(enumerator);
            }
        }
Exemple #4
0
        public void Add(T enumerator)
        {
            DBC.Tasks.Check.Require(isRunning == false, "can't modify a task collection while its running");

            var buffer = _listOfStacks.ToArrayFast();
            var count  = _listOfStacks.Count;

            if (count < buffer.Length && buffer[count].isValid())
            {
                buffer[count].Clear();
                buffer[count].Push(enumerator);

                _listOfStacks.ReuseOneSlot();
            }
            else
            {
                var stack = new StructFriendlyStack(_INITIAL_STACK_SIZE);
                _listOfStacks.Add(stack);
                buffer = _listOfStacks.ToArrayFast();
                buffer[_listOfStacks.Count - 1].Push(enumerator);
            }
        }