1 | % ====================================================================== |
---|
2 | % ====================================================================== |
---|
3 | \chapter{Future Work} |
---|
4 | % ====================================================================== |
---|
5 | % ====================================================================== |
---|
6 | |
---|
7 | Concurrency and parallelism is still a very active field that strongly benefits from hardware advances. As such certain features that aren't necessarily mature enough in their current state could become relevant in the lifetime of \CFA. |
---|
8 | \section{Non-Blocking IO} |
---|
9 | |
---|
10 | |
---|
11 | \section{Other concurrency tools} |
---|
12 | |
---|
13 | |
---|
14 | \section{Implicit threading} |
---|
15 | % Finally, simpler applications can benefit greatly from having implicit parallelism. That is, parallelism that does not rely on the user to write concurrency. This type of parallelism can be achieved both at the language level and at the system level. |
---|
16 | % |
---|
17 | % \begin{center} |
---|
18 | % \begin{tabular}[t]{|c|c|c|} |
---|
19 | % Sequential & System Parallel & Language Parallel \\ |
---|
20 | % \begin{lstlisting} |
---|
21 | % void big_sum(int* a, int* b, |
---|
22 | % int* out, |
---|
23 | % size_t length) |
---|
24 | % { |
---|
25 | % for(int i = 0; i < length; ++i ) { |
---|
26 | % out[i] = a[i] + b[i]; |
---|
27 | % } |
---|
28 | % } |
---|
29 | % |
---|
30 | % |
---|
31 | % |
---|
32 | % |
---|
33 | % |
---|
34 | % int* a[10000]; |
---|
35 | % int* b[10000]; |
---|
36 | % int* c[10000]; |
---|
37 | % //... fill in a and b ... |
---|
38 | % big_sum(a, b, c, 10000); |
---|
39 | % \end{lstlisting} &\begin{lstlisting} |
---|
40 | % void big_sum(int* a, int* b, |
---|
41 | % int* out, |
---|
42 | % size_t length) |
---|
43 | % { |
---|
44 | % range ar(a, a + length); |
---|
45 | % range br(b, b + length); |
---|
46 | % range or(out, out + length); |
---|
47 | % parfor( ai, bi, oi, |
---|
48 | % [](int* ai, int* bi, int* oi) { |
---|
49 | % oi = ai + bi; |
---|
50 | % }); |
---|
51 | % } |
---|
52 | % |
---|
53 | % int* a[10000]; |
---|
54 | % int* b[10000]; |
---|
55 | % int* c[10000]; |
---|
56 | % //... fill in a and b ... |
---|
57 | % big_sum(a, b, c, 10000); |
---|
58 | % \end{lstlisting}&\begin{lstlisting} |
---|
59 | % void big_sum(int* a, int* b, |
---|
60 | % int* out, |
---|
61 | % size_t length) |
---|
62 | % { |
---|
63 | % for (ai, bi, oi) in (a, b, out) { |
---|
64 | % oi = ai + bi; |
---|
65 | % } |
---|
66 | % } |
---|
67 | % |
---|
68 | % |
---|
69 | % |
---|
70 | % |
---|
71 | % |
---|
72 | % int* a[10000]; |
---|
73 | % int* b[10000]; |
---|
74 | % int* c[10000]; |
---|
75 | % //... fill in a and b ... |
---|
76 | % big_sum(a, b, c, 10000); |
---|
77 | % \end{lstlisting} |
---|
78 | % \end{tabular} |
---|
79 | % \end{center} |
---|
80 | % |
---|
81 | |
---|
82 | |
---|
83 | \section{Multiple Paradigms} |
---|
84 | |
---|
85 | |
---|
86 | \section{Transactions} |
---|