1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 11:38:21 +02:00

Comptime compat

This commit is contained in:
Brian Fiete 2022-03-08 06:23:24 -08:00
parent 1223395a01
commit bbb97d1490

View file

@ -18,11 +18,13 @@ namespace System.Threading
public this() public this()
{ {
if (!Compiler.IsComptime)
mCritSect = Platform.BfpCritSect_Create(); mCritSect = Platform.BfpCritSect_Create();
} }
public ~this() public ~this()
{ {
if (!Compiler.IsComptime)
Platform.BfpCritSect_Release(mCritSect); Platform.BfpCritSect_Release(mCritSect);
} }
@ -34,6 +36,7 @@ namespace System.Threading
{ {
MonitorLockInstance monitorLockInstance; MonitorLockInstance monitorLockInstance;
monitorLockInstance.mMonitor = this; monitorLockInstance.mMonitor = this;
if (!Compiler.IsComptime)
Platform.BfpCritSect_Enter(mCritSect); Platform.BfpCritSect_Enter(mCritSect);
return monitorLockInstance; return monitorLockInstance;
} }
@ -44,6 +47,7 @@ namespace System.Threading
/// multiple Enters which have not all be Exited. /// multiple Enters which have not all be Exited.
public void Exit() public void Exit()
{ {
if (!Compiler.IsComptime)
Platform.BfpCritSect_Leave(mCritSect); Platform.BfpCritSect_Leave(mCritSect);
} }
@ -51,14 +55,20 @@ namespace System.Threading
/// @return true if the monitor was entered /// @return true if the monitor was entered
public bool TryEnter() public bool TryEnter()
{ {
if (!Compiler.IsComptime)
return Platform.BfpCritSect_TryEnter(mCritSect, 0); return Platform.BfpCritSect_TryEnter(mCritSect, 0);
else
return true;
} }
/// Blocks up to a timeout, or if millisecondsTimeout is -1, will wait forever. /// Blocks up to a timeout, or if millisecondsTimeout is -1, will wait forever.
/// @return true if the monitor was entered /// @return true if the monitor was entered
public bool TryEnter(int millisecondsTimeout) public bool TryEnter(int millisecondsTimeout)
{ {
if (!Compiler.IsComptime)
return Platform.BfpCritSect_TryEnter(mCritSect, (int32)millisecondsTimeout); return Platform.BfpCritSect_TryEnter(mCritSect, (int32)millisecondsTimeout);
else
return true;
} }
private static int32 MillisecondsTimeoutFromTimeSpan(TimeSpan timeout) private static int32 MillisecondsTimeoutFromTimeSpan(TimeSpan timeout)