Changeset 3d5701e for doc/papers
- Timestamp:
- Feb 25, 2020, 1:17:33 PM (5 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 7dc2e015
- Parents:
- 9fb8f01 (diff), dd9e1ca (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- doc/papers
- Files:
-
- 7 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/papers/concurrency/Paper.tex
r9fb8f01 r3d5701e 239 239 \lstMakeShortInline@% 240 240 241 \newcommand{\commenttd}[1]{{\color{red}{Thierry : #1}}} 242 241 243 \let\OLDthebibliography\thebibliography 242 244 \renewcommand\thebibliography[1]{ … … 1163 1165 % } 1164 1166 % int main() { 1165 % 1167 % 1166 1168 % for ( int i = 0; i < 10; i += 1 ) { 1167 1169 % printf( "%d\n", fib() ); … … 1834 1836 if ( random() % 3 ) transfer( b1, b2, 7 ); 1835 1837 } 1836 } 1838 } 1837 1839 int main() { 1838 1840 `Person p1 = { b1, b2 }, p2 = { b2, b1 };` … … 1864 1866 if ( random() % 3 ) transfer( b1, b2, 7 ); 1865 1867 } 1866 } 1868 } 1867 1869 int main() { 1868 1870 `thread p1(person, ref(b1), ref(b2)), p2(person, ref(b2), ref(b1));` … … 2739 2741 % \section{Parallelism} 2740 2742 % \label{s:Parallelism} 2741 % 2743 % 2742 2744 % Historically, computer performance was about processor speeds. 2743 2745 % However, with heat dissipation being a direct consequence of speed increase, parallelism is the new source for increased performance~\cite{Sutter05, Sutter05b}. … … 2746 2748 % However, kernel threads are better as an implementation tool because of complexity and higher cost. 2747 2749 % Therefore, different abstractions are often layered onto kernel threads to simplify them, \eg pthreads. 2748 % 2749 % 2750 % 2751 % 2750 2752 % \subsection{User Threads} 2751 % 2753 % 2752 2754 % A direct improvement on kernel threads is user threads, \eg Erlang~\cite{Erlang} and \uC~\cite{uC++book}. 2753 2755 % This approach provides an interface that matches the language paradigms, gives more control over concurrency by the language runtime, and an abstract (and portable) interface to the underlying kernel threads across operating systems. … … 2755 2757 % Like kernel threads, user threads support preemption, which maximizes nondeterminism, but increases the potential for concurrency errors: race, livelock, starvation, and deadlock. 2756 2758 % \CFA adopts user-threads to provide more flexibility and a low-cost mechanism to build any other concurrency approach, \eg thread pools and actors~\cite{Actors}. 2757 % 2759 % 2758 2760 % A variant of user thread is \newterm{fibres}, which removes preemption, \eg Go~\cite{Go} @goroutine@s. 2759 2761 % Like functional programming, which removes mutation and its associated problems, removing preemption from concurrency reduces nondeterminism, making race and deadlock errors more difficult to generate.
Note: See TracChangeset
for help on using the changeset viewer.