|
@@ -23,15 +23,32 @@ package neko.vm;
|
|
|
|
|
|
class Lock {
|
|
|
var l : Dynamic;
|
|
|
+
|
|
|
+ /**
|
|
|
+ Creates a lock which is initially locked.
|
|
|
+ */
|
|
|
public function new() {
|
|
|
l = lock_create();
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ Waits for a lock to be released and acquire it. If timeout
|
|
|
+ (in seconds) is not `null` and expires then the returned
|
|
|
+ value is `false`.
|
|
|
+ */
|
|
|
public function wait( ?timeout : Float ) : Bool {
|
|
|
return lock_wait(l,timeout);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ Release a lock. The thread does not need to own the lock
|
|
|
+ to be able to release it. If a lock is released several
|
|
|
+ times, it can be acquired as many times.
|
|
|
+ */
|
|
|
public function release() {
|
|
|
lock_release(l);
|
|
|
}
|
|
|
+
|
|
|
static var lock_create = neko.Lib.load("std","lock_create",0);
|
|
|
static var lock_release = neko.Lib.load("std","lock_release",1);
|
|
|
static var lock_wait = neko.Lib.load("std","lock_wait",2);
|