This commit is contained in:
Dante
2026-05-21 23:40:20 -07:00
parent 3e2915dff7
commit 877a69d844
5737 changed files with 29796 additions and 1589684 deletions

View File

@ -0,0 +1,37 @@
package sys.thread;
import cs.system.threading.Monitor;
@:coreApi
@:access(sys.thread.Mutex)
class Condition {
final object:cs.system.Object;
public function new():Void {
this.object = new cs.system.Object();
}
public function acquire():Void {
Monitor.Enter(object);
}
public function tryAcquire():Bool {
return Monitor.TryEnter(object);
}
public function release():Void {
Monitor.Exit(object);
}
public function wait():Void {
Monitor.Wait(object);
}
public function signal():Void {
Monitor.Pulse(object);
}
public function broadcast():Void {
Monitor.PulseAll(object);
}
}

View File

@ -0,0 +1,22 @@
package sys.thread;
@:coreApi
class Semaphore {
final native:cs.system.threading.Semaphore;
public function new(value:Int):Void {
this.native = new cs.system.threading.Semaphore(value, 0x7FFFFFFF);
}
public function acquire():Void {
native.WaitOne();
}
public function tryAcquire(?timeout:Float):Bool {
return native.WaitOne(timeout == null ? 0 : Std.int(timeout * 1000));
}
public function release():Void {
native.Release();
}
}