blob: cdcaa424de2a320073c7cf1d9ddc8cc64d603626 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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;
}
|