1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
package sys.thread;
import python.lib.threading.Semaphore as NativeSemaphore;
@:coreApi
class Semaphore {
final semaphore:NativeSemaphore;
public function new(value:Int):Void {
this.semaphore = new NativeSemaphore(value);
}
public function acquire():Void {
semaphore.acquire();
}
public function tryAcquire(?timeout:Float):Bool {
return timeout == null ? semaphore.acquire(false) : semaphore.acquire(true, timeout);
}
public function release():Void {
semaphore.release();
}
}
|