source: doc/proposals/concurrency/text/future.tex @ 8d722cc

aaron-thesisarm-ehcleanup-dtorsdeferred_resndemanglerjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerresolv-newwith_gc
Last change on this file since 8d722cc was 8d722cc, checked in by Thierry Delisle <tdelisle@…>, 4 years ago

Update 0.10 of the thesis

  • Property mode set to 100644
File size: 2.0 KB
Line 
1% ======================================================================
2% ======================================================================
3\chapter{Future Work}
4% ======================================================================
5% ======================================================================
6
7Concurrency 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}
Note: See TracBrowser for help on using the repository browser.