mirror of
https://github.com/dhil/phd-dissertation
synced 2026-03-13 11:08:25 +00:00
More related work
This commit is contained in:
24
thesis.tex
24
thesis.tex
@@ -7940,7 +7940,7 @@ complete is the $\init$ process.
|
||||
\section{Related work}
|
||||
\label{sec:unix-related-work}
|
||||
|
||||
\paragraph{Programming language support for handlers}
|
||||
\paragraph{Programming languages with handlers}
|
||||
|
||||
\paragraph{Effect-driven concurrency}
|
||||
In their tutorial of the Eff programming language \citet{BauerP15}
|
||||
@@ -7991,8 +7991,20 @@ continuations can possibly be credited to
|
||||
\citet{Burstall69}. \citeauthor{Burstall69} used
|
||||
\citeauthor{Landin65}'s J operator to arrange tree-based search, where
|
||||
each branch would be reified as a continuation and put into a
|
||||
queue. \citet{Wand80} \citet{HaynesF84} \citet{GanzFW99}
|
||||
\citet{HiebD90}
|
||||
queue.
|
||||
|
||||
\citet{Wand80} implements a small multi-tasking kernel with support
|
||||
for mutual exclusion and data protection using undelimited
|
||||
continuations in the style of the catch operator of Scheme.
|
||||
\citet{HaynesFW86} codify coroutines as library using call/cc.
|
||||
\citet{DybvigH89} implements \emph{engines} using call/cc in Scheme
|
||||
--- an engine is a kind of process abstraction which support
|
||||
preemption. An engine runs a computation on some time budget. If
|
||||
computation exceeds the allotted time budget, then it is
|
||||
interrupted. They represent engines as reified continuations and use
|
||||
the macro system of Scheme to insert clock ticks at appropriate places
|
||||
in the code. \citet{HiebD90} also design the \emph{spawn-controller}
|
||||
operator for programming tree-based concurrency abstractions.
|
||||
|
||||
\paragraph{Resumption monad}
|
||||
The resumption monad is both a semantic and programmatic abstraction
|
||||
@@ -8004,9 +8016,9 @@ commands for interrupting computation.
|
||||
%
|
||||
\citet{Harrison06} demonstrates the resumption monad as a practical
|
||||
programming abstraction by implementing a small multi-tasking
|
||||
operating system. \citeauthor{Harrison06} implements two variations of
|
||||
the resumption monad: basic and reactive. The basic resumption monad
|
||||
is a closed environment for interleaving different strands of
|
||||
kernel. \citeauthor{Harrison06} implements two variations of the
|
||||
resumption monad: basic and reactive. The basic resumption monad is a
|
||||
closed environment for interleaving different strands of
|
||||
computations. It is closed in the sense that strands of computation
|
||||
cannot interact with the ambient context of their environment. The
|
||||
reactive resumption monad makes the environment open by essentially
|
||||
|
||||
Reference in New Issue
Block a user