diff --git a/std/neko/_std/sys/thread/Semaphore.hx b/std/neko/_std/sys/thread/Semaphore.hx new file mode 100644 index 00000000000..de8b10adcbe --- /dev/null +++ b/std/neko/_std/sys/thread/Semaphore.hx @@ -0,0 +1,26 @@ +package sys.thread; + +@:coreApi class Semaphore { + var s:Dynamic; + + public function new(value:Int):Void { + s = semaphore_create(value); + } + + public function acquire():Void { + semaphore_acquire(s); + } + + public function tryAcquire(?timeout:Float):Bool { + return semaphore_try_acquire(s, timeout); + } + + public function release():Void { + semaphore_release(s); + } + + static var semaphore_create = neko.Lib.loadLazy("std", "semaphore_create", 1); + static var semaphore_try_acquire = neko.Lib.loadLazy("std", "semaphore_try_acquire", 2); + static var semaphore_acquire = neko.Lib.loadLazy("std", "semaphore_acquire", 1); + static var semaphore_release = neko.Lib.loadLazy("std", "semaphore_release", 1); +} diff --git a/tests/threads/src/cases/TestSemaphore.hx b/tests/threads/src/cases/TestSemaphore.hx index f18ce27d4b2..31b8bce796d 100644 --- a/tests/threads/src/cases/TestSemaphore.hx +++ b/tests/threads/src/cases/TestSemaphore.hx @@ -1,11 +1,8 @@ package cases; -#if !neko import sys.thread.Semaphore; -#end class TestSemaphore extends utest.Test { - #if !neko function test() { var m = new Semaphore(3); m.acquire(); @@ -17,5 +14,4 @@ class TestSemaphore extends utest.Test { m.release(); m.release(); } - #end }