Contents
1 Introduction
2 Concurrency Model
2.1 Basic Operations
2.2 Communication
3 Three Example Applications
3.1 Kpn
3.2 Eratosthene Sieve
3.3 Concurrent Sort
4 Direct Style Implementations
4.1 Capturing Continuations
4.2 Delimited Continuations
5 Indirect Style Implementations
5.1 Trampolined Style
5.2 Continuation Monad
5.3 Promise Monad
5.4 Event-based Programming
6 Performance
7 Conclusion and Perspectives
A Applications Source Code
A.1 Kpn
A.1.1 Direct Style
A.1.2 Indirect Style
A.2 Sieve
A.2.1 Direct Style
A.2.2 Indirect Style
A.3 Sorter
A.3.1 Direct Style
A.3.2 Indirect Style
B Complete Source Code of the Implementations
B.1 System/VM preemptive scheduling
B.2 Capturing Continuations
B.3 Delimited Continuations
B.4 Trampolined Style
B.5 Continuation Monad
B.6 Promise Monad
B.7 Events