1 | % ====================================================================== |
---|
2 | % ====================================================================== |
---|
3 | \chapter{Conclusion}\label{s:conclusion} |
---|
4 | % ====================================================================== |
---|
5 | % ====================================================================== |
---|
6 | This thesis presented a suite of safe and efficient concurrency tools that provide users with the means to write scalable programs in \CFA through many avenues. |
---|
7 | If users prefer the message passing paradigm of concurrency, \CFA now provides tools in the form of a performant actor system and channels. |
---|
8 | For shared memory concurrency the mutex statement provides a safe and easy-to-use interface for mutual exclusion. |
---|
9 | The waituntil statement provided by this works aids in writing concurrent programs in both the message passing and shared memory worlds of concurrency. |
---|
10 | Furthermore no other language provides a synchronous multiplexing tool polymorphic over resources like \CFA's waituntil. |
---|
11 | From the novel copy queue data structure in the actor system, to the plethora of user-supporting safety features, all these utilities build upon existing tools with value added. |
---|
12 | |
---|
13 | \section{Future Work} |
---|
14 | \subsection{Further Implicit Concurrency} |
---|
15 | This thesis scratches the surface of implicit concurrency by providing an actor system. |
---|
16 | There is room for more implicit concurrency tools in \CFA. |
---|
17 | User-defined implicit concurrency in the form of annotated loops or recursive functions exists in many other languages~\cite{} and could be implemented and expanded on in \CFA. |
---|
18 | Additionally, the problem of automatic parallelism of sequential programs via the compiler is an interesting research space that other languages have approached~\cite{} that could also be explored in \CFA. |
---|
19 | |
---|
20 | |
---|
21 | \subsection{Synchronously Multiplexing System Calls} |
---|
22 | There are many tools that try to sychronize on or asynchronously check I/O, since improvements in this area pay dividends in many areas of computer science~\cite{}. %cite all the poll/iouring utilities |
---|
23 | Research on improving user-space tools to synchronize over I/O and other system calls is an interesting area to explore in the world of concurrent tooling. |
---|
24 | |
---|
25 | \subsection{Better Atomics} |
---|
26 | When writing low level concurrent programs, expecially lock/wait-free programs, low level atomic instructions need to be used. |
---|
27 | In C, the gcc-builtin atomics~\cite{} are commonly used, but leave much to be desired. |
---|
28 | Some of the problems include the following. |
---|
29 | Archaic and opaque macros often have to be used to ensure that atomic assembly is generated instead of locks. |
---|
30 | The builtins are polymorphic, but not type safe since they use void pointers. |
---|
31 | The semantics and safety of these builtins require careful navigation since they require the user to have a nuanced understanding of concurrent memory ordering models to pass via flags. |
---|
32 | Furthermore, these atomics also often require a user to understand how to fence appropriately to ensure correctness. |
---|
33 | All these problems and more could benefit from language support, and adding said language support in \CFA could constitute a great research contribution, and allow for easier writing of low-level safe concurrent code. |
---|