4 |
5 | # Distributed Async Await
6 |
7 | This **reading list** explores the foundational literature that informs the design and development of Distributed Async Await.
8 |
9 | ---
10 |
11 | ## Events vs. Threads
12 |
13 | ### [On the Duality of Operating System Structures](https://dl.acm.org/doi/pdf/10.1145/850657.850658)
14 | * **Author(s):** Hugh C. Lauer, Roger M. Needham
15 | * **Published:** 1979
16 | * **Summary:** This paper discusses the duality between procedure-based systems and event-based systems, illustrating how both paradigms can model equivalent structures.
17 |
18 | ### [Why Threads Are a Bad Idea (for Most Purposes)](https://sites.cc.gatech.edu/classes/AY2010/cs4210_fall/papers/ousterhout-threads.pdf)
19 | * **Author(s):** John Ousterhout
20 | * **Published:** 1995
21 | * **Summary:** The author critiques thread-based implementations for their subpar efficiency compared to event-based implementations.
22 |
23 | ### [Why Events Are a Bad Idea (for High-Concurrency Servers)](https://web.stanford.edu/class/cs240e/papers/threads-hotos-2003.pdf)
24 | * **Author(s):** Rob von Behren, Jeremy Condit, and Eric Brewer
25 | * **Published:** 2003
26 | * **Summary:** The authors critique event-based implementations for their subpar developer experience compared to thread-based implementations.
27 |
28 | ---
29 |
30 | ## Sequential Programming Models & Event-Driven Execution Models
31 |
32 | ### [Cooperative Task Management without Manual Stack Management](https://web.eecs.umich.edu/~mosharaf/Readings/Fibers-Coop-Tasks.pdf)
33 | * **Author(s):** Atul Adya, Jon Howell, Marvin Theimer, William J. Bolosky, John R. Douceur
34 | * **Published:** 2002
35 | * **Summary:** This paper is a foundational contribution to understanding how sequential programming model can be implemented on top of a event-driven execution model. Additionally, the paper introduces the notion of *stack ripping* as the primary reason for the subpar developer experience of event-based implementations.
36 |
37 | ### [A Language-Based Approach to Unifying Events and Threads](https://www.cis.upenn.edu/~stevez/papers/LZ06b.pdf)
38 | * **Author(s):** Peng Li, Steve Zdancewic
39 | * **Published:** 2006
40 | * **Summary:** This paper presents a language-level implementation of a sequential programming model implemented on top of a event-driven execution model.
41 |
42 | ### [Combining Events And Threads For Scalable Network Services. Implementation And Evaluation Of Monadic, Application-level Concurrency Primitives](https://dl.acm.org/doi/10.1145/1273442.1250756)
43 | * **Author(s):** Peng Li, Steve Zdancewic
44 | * **Published:** 2007
45 | * **Summary:** The authors evaluate monadic primitives for managing concurrency at the application level.
46 |
47 | ---
48 |
49 | ## Concurrent Systems
50 |
51 | ### [Revisiting Coroutines](https://dl.acm.org/doi/pdf/10.1145/1462166.1462167)
52 | * **Author(s):** Ana Lucia de Moura, Roberto Ierusalimschy
53 | * **Published:** 2009
54 | * **Summary:** This paper classifies coroutines and provides a formal model using small-step operational semantics, offering insights into their use as an alternative to callbacks.
55 |
56 | ### [A Poor Man’s Concurrency Monad](https://www.cambridge.org/core/services/aop-cambridge-core/content/view/A369E310ADAE4455020C918FC1D47958/S0956796899003342a.pdf/a-poor-mans-concurrency-monad.pdf)
57 | * **Author(s):** Koen Claessen
58 | * **Published:** 1999
59 | * **Summary:** This paper presents an implementation of concurrency by defining atomic operations and continuations.
60 |
61 | ### [Semantics of Asynchronous JavaScript](https://www.microsoft.com/en-us/research/wp-content/uploads/2017/08/asyncNodeSemantics.pdf)
62 | * **Author(s):** Matthew C. Loring, Mark Marron, and Daan Leijen
63 | * **Published:** 2017
64 | * **Summary:** This paper presents a comprehensive
65 | formalization of the Node.js asynchronous execution model
66 |
67 | ### [A Model of Cooperative Threads](https://homepages.inf.ed.ac.uk/gdp/publications/Semantics_Cooperative_Threads_journal.pdf)
68 | * **Author(s):** Martin Abadi, Gordon D. Plotkin
69 | * **Published:** 1998
70 | * **Summary:** This paper develops a model of concurrent imperative programming with threads, focusing on a small imperative language with cooperative threads that execute without interruption until they terminate or explicitly yield control.
71 | ---
72 |
73 | ## Distributed Systems
74 |
75 | ### [A Note on Distributed Computing](https://scholar.harvard.edu/files/waldo/files/waldo-94.pdf)
76 | * **Author(s):** Jim Waldo, Geoff Wyant, Ann Wollrath, and Sam Kendall
77 | * **Published:** 1994
78 | * **Summary:** The authors argue that a distributed system is intrinsicly different from a non-distributes system
79 |
80 | ## Contributing
81 | If you have suggestions for additional papers related to distributed async await, please open an issue or submit a pull request.
82 |
83 |
--------------------------------------------------------------------------------
/img/echo-simple-icon-black.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
35 |
--------------------------------------------------------------------------------