Пример #1
0
 public void Resume()
 {
     if (State == MicroThreadState.Blocking)
     {
         State = MicroThreadState.Ready;
     }
 }
Пример #2
0
        public MicroThread(Loop loop, Action callback)
        {
            Loop = loop;

            State = MicroThreadState.NotStarted;
            Loop.GetMicroThreadCollection().Add(this);

            cb = callback;
        }
Пример #3
0
		public MicroThread(Loop loop, Action callback)
		{
			Loop = loop;

			State = MicroThreadState.NotStarted;
			Loop.GetMicroThreadCollection().Add(this);

			cb = callback;
		}
Пример #4
0
		public void Start()
		{
			switch (State) {
			case MicroThreadState.NotStarted:
				State = MicroThreadState.Ready;
				break;
			default:
				break;
			}
		}
Пример #5
0
 internal void Yield(MicroThreadState newState)
 {
     if (State == MicroThreadState.Running)
     {
         State = newState;
         if (Continuation.Store(0) == 0)
         {
             Loop.GetMicroThreadCollection().Next();
         }
     }
 }
Пример #6
0
        public void Start()
        {
            switch (State)
            {
            case MicroThreadState.NotStarted:
                State = MicroThreadState.Ready;
                break;

            default:
                break;
            }
        }
        public void Start()
        {
            if (m_state != MicroThreadState.Unstarted)
            {
                throw new Exception("Thread has already been started");
            }

            m_continuation = new Continuation();

            m_state = MicroThreadState.Starting;
            Scheduler.Add(this);
        }
Пример #8
0
		internal void Run()
		{
			State = MicroThreadState.Running;
			if (Continuation == null) {
				Continuation = new Continuation();
				Continuation.Mark();
				cb();
				State = MicroThreadState.Done;
				Loop.GetMicroThreadCollection().Next();
			} else {
				Continuation.Restore(1);
			}
		}
Пример #9
0
 internal void Run()
 {
     State = MicroThreadState.Running;
     if (Continuation == null)
     {
         Continuation = new Continuation();
         Continuation.Mark();
         cb();
         State = MicroThreadState.Done;
         Loop.GetMicroThreadCollection().Next();
     }
     else
     {
         Continuation.Restore(1);
     }
 }
Пример #10
0
        public void Start()
        {
            if(m_state != MicroThreadState.Unstarted)
            {
                throw new Exception("Thread has already been started");
            }

            m_continuation = new Continuation();

            m_state = MicroThreadState.Starting;
            Scheduler.Add(this);
        }
Пример #11
0
		internal void Yield(MicroThreadState newState)
		{
			if (State == MicroThreadState.Running) {
				State = newState;
				if (Continuation.Store(0) == 0) {
					Loop.GetMicroThreadCollection().Next();
				}
			}
		}
Пример #12
0
		public void Resume()
		{
			if (State == MicroThreadState.Blocking) {
				State = MicroThreadState.Ready;
			}
		}