diff options
Diffstat (limited to '04_exercise/main.c')
-rw-r--r-- | 04_exercise/main.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/04_exercise/main.c b/04_exercise/main.c index 18fb21e..e73dd98 100644 --- a/04_exercise/main.c +++ b/04_exercise/main.c @@ -5,22 +5,23 @@ static TASK(long, fib, long) -long fib(long n) { - if (n <= 1) - return n; - - fib_fut *a = fibAsync((fib_fut[]) { fibFuture(n - 1) }); - fib_fut *b = fibAsync((fib_fut[]) { fibFuture(n - 2) }); - - return fibAwait(a) + fibAwait(b); + long fib(long n) { + if (n <= 1) + return n; + + fib_fut *a = fibAsync((fib_fut[]){fibFuture(n - 1)}); + fib_fut *b = fibAsync((fib_fut[]){fibFuture(n - 2)}); + + return fibAwait(a) + fibAwait(b); } int main() { - if (tpInit(8) != 0) - perror("Thread Pool initialization failed"), exit(-1); - atexit(&tpRelease); - for (long i = 0; i <= 20; ++i) - printf("fib(%2li) = %li\n", i, fib(i)); - - return 0; + setvbuf(stdout, NULL, _IONBF, 0); + if (tpInit(1) != 0) + perror("Thread Pool initialization failed"), exit(-1); + atexit(&tpRelease); + for (long i = 0; i <= 20; ++i) + printf("fib(%2li) = %li\n", i, fib(i)); + + return 0; } |