1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 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);
}
}
|