Beispiel #1
0
        public void Run(Scheduler scheduler)
        {
            _scheduler = scheduler;
            Thread.Value = this;
            if (_enumerator == null)
                _enumerator = _func();

            bool end = Loop(scheduler);

            Thread.Value = null;

            if (_parent != null && end)
                scheduler.RunMicrothread(_parent);
        }
Beispiel #2
0
 private bool Loop(Scheduler scheduler)
 {
     if(_enumerator.MoveNext())
     {
         if (_enumerator.Current is Microthread)
             scheduler.RunMicrothread(_enumerator.Current as Microthread);
         return false;
     }
     return true;
 }