diff options
author | Stefan Zabka <zabkaste@hu-berlin.de> | 2020-06-10 17:10:02 +0200 |
---|---|---|
committer | Stefan Zabka <zabkaste@hu-berlin.de> | 2020-06-10 17:10:02 +0200 |
commit | 47aaae2c42d554963fb811b68fdf28c9743598e8 (patch) | |
tree | c5c75adf2633f17b4f738a692273d6b92d362a7a /04_exercise/main.c | |
parent | 9eb2eddf718bacb968733be6c07dae40bec28256 (diff) | |
download | betriebssysteme-47aaae2c42d554963fb811b68fdf28c9743598e8.tar.gz betriebssysteme-47aaae2c42d554963fb811b68fdf28c9743598e8.zip |
Starting threadpool
Diffstat (limited to '04_exercise/main.c')
-rw-r--r-- | 04_exercise/main.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/04_exercise/main.c b/04_exercise/main.c new file mode 100644 index 0000000..cdcaa42 --- /dev/null +++ b/04_exercise/main.c @@ -0,0 +1,27 @@ +#include "threadpool.h" + +#include <stdio.h> +#include <stdlib.h> + +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); +} + +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; +} |