Changeset f3f009f for doc/theses/colby_parsons_MMAth/text/intro.tex
- Timestamp:
- Sep 6, 2023, 3:44:40 PM (10 months ago)
- Branches:
- master
- Children:
- 01510fe
- Parents:
- 4894239 (diff), 4a40fca7 (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. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/colby_parsons_MMAth/text/intro.tex
r4894239 rf3f009f 16 16 All of these features exist in other programming languages in some shape or form, however this thesis extends the original ideas by improving performance, productivity, and safety. 17 17 18 \section{The Need For Concurrent Features} 19 Asking a programmer to write a complex concurrent program without any concurrent language features is asking them to undertake a very difficult task. 20 They would only be able to rely on the atomicity that their hardware provides and would have to build up from there. 21 This would be like asking a programmer to write a complex sequential program only in assembly. 22 Both are doable, but would often be easier and less error prone with higher level tooling. 23 24 Concurrent programming has many pitfalls that are unique and do not show up in sequential code: 25 \begin{enumerate} 26 \item Deadlock, where threads cyclically wait on resources, blocking them indefinitely. 27 \item Livelock, where threads constantly attempt a concurrent operation unsuccessfully, resulting in no progress being made. 28 \item Race conditions, where thread orderings can result in differing behaviours and correctness of a program execution. 29 \item Starvation, where threads may be deprived of access to some shared resource due to unfairness and never make progress. 30 \end{enumerate} 31 Even with the guiding hand of concurrent tools these pitfalls can still catch unwary programmers, but good language support can prevent, detect, and mitigate these problems. 32 33 \section{A Brief Overview} 18 34 19 35 The first chapter of this thesis aims to familiarize the reader with the language \CFA. … … 31 47 The @waituntil@ statement presented provides greater flexibility and expressibility than similar features in other languages. 32 48 All in all, the features presented aim to fill in gaps in the current \CFA concurrent language support, and enable users to write a wider range of complex concurrent programs with ease. 49 50 \section{Contributions} 51 This work presents the following contributions: 52 \begin{enumerate} 53 \item The @mutex@ statement which: 54 \begin{itemize}[itemsep=0pt] 55 \item 56 provides deadlock-free multiple lock acquisition, 57 \item 58 clearly denotes lock acquisition and release, 59 \item 60 and has good performance irrespective of lock ordering. 61 \end{itemize} 62 \item Channels which: 63 \begin{itemize}[itemsep=0pt] 64 \item 65 achieves comparable performance to Go, the gold standard for concurrent channels, 66 \item 67 has deadlock detection, 68 \item 69 introduces easy-to-use exception-based @close@ semantics, 70 \item 71 and provides toggle-able statistics for performance tuning. 72 \end{itemize} 73 \item An in-memory actor system that: 74 \begin{itemize}[itemsep=0pt] 75 \item 76 achieves the lowest latency message send of all tested systems, 77 \item 78 is the first inverted actor system to introduce queue stealing, 79 \item 80 attains zero-victim-cost stealing through a carefully constructed stealing mechanism, 81 \item 82 gains performance through static-typed message sends, eliminating the need for dynamic dispatch, 83 \item 84 introduces the copy queue, an array based queue specialized for the actor use case to minimize calls to the memory allocator, 85 \item 86 has robust detection of six tricky, but common actor programming errors, 87 \item 88 achieves very good performance on a diverse benchmark suite compared to other actor systems, 89 \item 90 and provides toggle-able statistics for performance tuning. 91 \end{itemize} 92 93 \item A @waituntil@ statement which: 94 \begin{itemize}[itemsep=0pt] 95 \item 96 is the only known polymorphic synchronous multiplexing language feature, 97 \item 98 provides greater expressibility of waiting conditions than other languages, 99 \item 100 and achieves comparable performance to similar features in two other languages, 101 \end{itemize} 102 \end{enumerate}
Note: See TracChangeset
for help on using the changeset viewer.