private static void ExitCritical() { //BasicConsole.WriteLine("Exiting critical section..."); if (AccessLockInitialised) { if (AccessLock == null) { BasicConsole.WriteLine("GCAccessLock is initialised but null?!"); BasicConsole.DelayOutput(10); } else { AccessLock.Exit(); } } //else //{ // BasicConsole.WriteLine("GCAccessLock not initialised - ignoring lock conditions."); // BasicConsole.DelayOutput(5); //} }
private static void EnterCritical(FOS_System.String caller) { //BasicConsole.WriteLine("Entering critical section..."); if (AccessLockInitialised) { if (AccessLock == null) { BasicConsole.WriteLine("GCAccessLock is initialised but null?!"); BasicConsole.DelayOutput(10); } else { #if GC_TRACE if (AccessLock.Locked && OutputTrace) { BasicConsole.SetTextColour(BasicConsole.warning_colour); BasicConsole.WriteLine("Warning: GC about to try to re-enter spin lock..."); BasicConsole.Write("Enter lock caller: "); BasicConsole.WriteLine(caller); BasicConsole.Write("Previous caller: "); BasicConsole.WriteLine(lastLocker); BasicConsole.SetTextColour(BasicConsole.default_colour); } #endif AccessLock.Enter(); #if GC_TRACE lastLocker = caller; #endif } } //else //{ // BasicConsole.WriteLine("GCAccessLock not initialised - ignoring lock conditions."); // BasicConsole.DelayOutput(5); //} }