Esempio n. 1
0
            private bool RemoveAllInvalidYieldStackPredicate(YieldStack stack)
            {
                bool validHandle;
                var  handle = stack.handle;

                lock (handle)
                {
                    validHandle = !handle.isDone && handle.stack == stack;
                }

                if (validHandle)
                {
                    if (stack.waitForUpdate)
                    {
                        tempStageStackes.Add(stack);
                    }
                }
                else
                {
                    List <YieldStack> stageStacks;
                    if (TryGetOtherStageFromYieldInstruction(stack.yieldInstruction, out stageStacks))
                    {
                        lock (stageStacks)
                        {
                            // TODO: indexed set?
                            stageStacks.Remove(stack);
                        }
                    }
                    pool.Release(stack);
                }

                return(!validHandle);
            }
 public void Release(YieldStack stack)
 {
     lock (pool)
     {
         stack.Clear();
         pool.Push(stack);
     }
 }
 public override void Stop()
 {
     lock (this)
     {
         stack  = null;
         isDone = true;
     }
 }