Brian Fiete 3 anni fa
parent
commit
bbb97d1490
1 ha cambiato i file con 16 aggiunte e 6 eliminazioni
  1. 16 6
      BeefLibs/corlib/src/Threading/Monitor.bf

+ 16 - 6
BeefLibs/corlib/src/Threading/Monitor.bf

@@ -18,12 +18,14 @@ namespace System.Threading
 
         public this()
         {
-            mCritSect = Platform.BfpCritSect_Create();
+			if (!Compiler.IsComptime)
+            	mCritSect = Platform.BfpCritSect_Create();
         }
 
         public ~this()
         {
-            Platform.BfpCritSect_Release(mCritSect);
+			if (!Compiler.IsComptime)
+            	Platform.BfpCritSect_Release(mCritSect);
         }
 
 		/// Acquires the monitor lock. Will block if another thread holds the lock.
@@ -34,7 +36,8 @@ namespace System.Threading
         {
             MonitorLockInstance monitorLockInstance;
             monitorLockInstance.mMonitor = this;
-            Platform.BfpCritSect_Enter(mCritSect);
+			if (!Compiler.IsComptime)
+            	Platform.BfpCritSect_Enter(mCritSect);
             return monitorLockInstance;
         }
         
@@ -44,21 +47,28 @@ namespace System.Threading
 		/// multiple Enters which have not all be Exited.
         public void Exit()
         {
-            Platform.BfpCritSect_Leave(mCritSect);
+			if (!Compiler.IsComptime)
+            	Platform.BfpCritSect_Leave(mCritSect);
         }
     
         /// Attempt to enter the monitor without waiting.
 		/// @return true if the monitor was entered
         public bool TryEnter()
         {
-            return Platform.BfpCritSect_TryEnter(mCritSect, 0);
+			if (!Compiler.IsComptime)
+            	return Platform.BfpCritSect_TryEnter(mCritSect, 0);
+			else
+				return true;
         }
         
 		/// Blocks up to a timeout, or if millisecondsTimeout is -1, will wait forever.
 		/// @return true if the monitor was entered
         public bool TryEnter(int millisecondsTimeout)
         {
-            return Platform.BfpCritSect_TryEnter(mCritSect, (int32)millisecondsTimeout);
+			if (!Compiler.IsComptime)
+            	return Platform.BfpCritSect_TryEnter(mCritSect, (int32)millisecondsTimeout);
+			else
+				return true;
         }
         
         private static int32 MillisecondsTimeoutFromTimeSpan(TimeSpan timeout)