コード例 #1
0
ファイル: Scheduler.cs プロジェクト: dotnetGame/natsu-clr
        internal void UnDelayThread(Thread thread)
        {
            Debug.Assert(thread.State == ThreadState.Wait);

            using (ProcessorCriticalSection.Acquire())
            {
                var scheduleEntry = thread.ScheduleEntry;
                scheduleEntry.List !.Remove(scheduleEntry);
                _readyThreads.AddLast(scheduleEntry);
                scheduleEntry.Value.Thread.State = ThreadState.Ready;
            }
        }
コード例 #2
0
ファイル: Scheduler.cs プロジェクト: dotnetGame/natsu-clr
        internal void KillThread(Thread thread)
        {
            Debug.Assert(thread._scheduler == this);

            using (ProcessorCriticalSection.Acquire())
            {
                if (Interlocked.Exchange(ref thread._scheduler, null) != null)
                {
                    RemoveThreadFromReadyList(thread);
                    thread.State = ThreadState.Terminated;
                    thread.OnKilled();
                }
            }
        }