internal void ExitCPUContext(ICPUContext CPUContext)
{
System.Diagnostics.Debug.Assert(CPUContext.IsCurrent());
((CPUContext)CPUContext).Release();
// UnlockCPUでは、deleteしたCPUContextに対してEndDelaySuspendを
// 呼んでしまうので、その手前の処理のみ実行。
int TlsLockCount = (int)m_TlsIndex.Value;
TlsLockCount--;
// ロック解除
if (TlsLockCount == 0)
{
m_SysSem.Release();
Interlocked.Decrement(ref m_Locked);
}
m_TlsIndex.Value = TlsLockCount;
m_IntEvent.Set();
CPUContext.Exit();
}