Warning: session_start(): open(/var/lib/php/sessions/sess_mejsd8nekf8p4ghmq9re117mo4, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
static Set evalWithTimeout_inTime = synchroSet();
static Set evalWithTimeout_allThreads = synchroSet();
// Either calculation result or Thread with timed-out computation
// Tries to interrupt thread after timeout
// Errors are rethrown.
static Either evalWithTimeout(int timeoutMS, fO r) {
final new Flag done;
final new Flag doneWaiting;
final new Var var;
final new Var error;
Thread t = startThread(r {
try {
try {
var.set(callF(r));
} finally {
evalWithTimeout_allThreads.remove(currentThread());
}
} catch e {
error.set(e);
if (doneWaiting.isUp())
printStackTrace(e);
} finally {
done.raise();
}
});
evalWithTimeout_inTime.add(t);
evalWithTimeout_allThreads.add(t);
try {
done.waitUntilUp(timeoutMS);
doneWaiting.raise();
} finally {
evalWithTimeout_inTime.remove(t);
}
// timeout! cancel/interrupt and return thread object
if (!done.isUp()) {
cancelAndInterruptThread(t);
ret either2(t);
}
// thread ended with error
if (error! != null) rethrow(error!);
// thread ended naturally
ret either1(var!);
}
static Either evalWithTimeout(double timeoutSeconds, fO r) {
ret evalWithTimeout(toMS_int(timeoutSeconds), r);
}