Warning: session_start(): open(/var/lib/php/sessions/sess_9lbll8s2lacfji930a1lrm02i2, 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
// Main function that user can call
static long stupidFib_collab(ICollab collab, int n) {
ret collab_computeLong2(collab, continuation -> stupidFib_collab(collab, n, continuation));
}
// Work function used internally
svoid stupidFib_collab(ICollab collab, int n, LongConsumer continuation) {
// switch to serial if no coworkers, OR if small enough work unit
if (collab.singleCore() || n < 24) ret with continuation.accept(stupidFib(n));
// recursion base
if (n < 3) ret with continuation.accept(1);
// recursion step
var collector = longPairCollector((a, b) -> continuation.accept(a+b));
collab.addWork(-> stupidFib_collab(collab, n-1, collector.setA()));
collab.addWork(-> stupidFib_collab(collab, n-2, collector.setB()));
}
/*
// Both functions in one using the "parallel" modifier
static parallel long stupidFib_collab(ICollab collab, int n, LongConsumer continuation) {
// switch to serial if no coworkers, OR if small enough work unit
if (collab.singleCore() || n < 24) ret stupidFib(n);
// recursion base
if (n < 3) ret 1;
// recursion step
var collector = longPairCollector((a, b) -> ret a+b);
collab.addWork(-> stupidFib_collab(collab, n-1, collector.setA()));
collab.addWork(-> stupidFib_collab(collab, n-2, collector.setB()));
}
*/