public CPUContext(Kernel pKernel) { m_Kernel = pKernel; m_Thread = null; m_Terminate = false; m_Release = false; m_Task = null; m_Execute = null; m_DelaySuspend = 0; m_SuspendFlag = 0; if (m_TlsIndex == null) m_TlsIndex = new ThreadLocal<CPUContext>(); }
public CPUContext(Kernel pKernel) { m_Kernel = pKernel; m_Thread = null; m_Terminate = false; m_Release = false; m_Task = null; m_Execute = null; m_DelaySuspend = 0; m_SuspendFlag = 0; if (m_TlsIndex == null) { m_TlsIndex = new ThreadLocal <CPUContext>(); } }
public void Activate(Task Task, TTaskExecute pExecute) { if (m_Thread != null) throw new Exception(); m_Task = Task; m_Execute = pExecute; m_SuspendFlag = SUSPEND_FLAG_KERNEL_REQUEST; m_Thread = new Thread(ThreadProc); if (m_Thread == null) throw new Exception(); m_Thread.Start(); while ((m_SuspendFlag & SUSPEND_FLAG_SWITCH_TO_KERNEL) == 0) Thread.Yield(); }
public void Activate(Task Task, TTaskExecute pExecute) { if (m_Thread != null) { throw new Exception(); } m_Task = Task; m_Execute = pExecute; m_SuspendFlag = SUSPEND_FLAG_KERNEL_REQUEST; m_Thread = new Thread(ThreadProc); if (m_Thread == null) { throw new Exception(); } m_Thread.Start(); while ((m_SuspendFlag & SUSPEND_FLAG_SWITCH_TO_KERNEL) == 0) { Thread.Yield(); } }