Links and recommended reading
This page contains links to some interesting papers and web pages
about threads, continuations, and control structures in general that I
found useful during the development of protothreads. The list is in no
way exhaustive, however, and should not be used as a replacement of a
good book on the subject ;-)
- State Threads Library
for Internet Applications, similar in principle to protothreads
(reduce the need for explicit state machines for event-driven
systems), but different in scope (the State Threads Library targets
high performance web servers, whereas protothreads target memory
constrained embedded systems)
- Structure and Interpretation
of Computer Programs, by Hal Abelson, Jerry Sussman and Julie
- The Same Fringe
Problem, the killer example of the usefulness of coroutines, from the
- Continuations And Coroutines, from the PortlandPatternRepository.
Explanation, from the PortlandPatternRepository.
- Understanding Continuations, message to the Lightweight Languages
mailing list by Peter J. Wasilko, Esq.
- Coroutines in C by Simon Tatham.
- Duff's device, comp.lang.c posting by Tom Duff.
Picothreads - lightweight threading for Java
- Continuation based web servers, from Andrew Hyatt's Blog.
continuation based web servers, from Chris Double's Radio Weblog.
- The SMALL language
- Filaments, fine-grain parallelism both portably and efficiently on
shared- and distributed-memory machines, by Vince Freeh, David
Lowenthal and Greg Andrews.
- John K. Ousterhout, held an
Invited Talk at the 1996 USENIX Technical Conference with the title
"Why Threads Are A Bad Idea (for most purposes)"
- Lauer, H.C., Needham,
R.M., "On the Duality of Operating Systems Structures," in
Proc. Second International Symposium on Operating Systems, IR1A,
- G. Lindstrom and
M. L. Soffa, "Referencing and Retention in Block-Structured
Coroutines", ACM Transactions on Programming Languages and Systems
(TOPLAS) archive Volume 3 , Issue 3 (July 1981).
- Reynolds, J. C. 1993. The discoveries of continuations. Lisp
Symbol. Comput. 6, 3/4, 233--247.
- R. von Behren, J. Condit, F. Zhou, G. C. Necula, and E. Brewer,
"Capriccio: Scalable threads for internet services," in 19th ACM
Symposium on Operating Systems Principles, 2003.
- Rob von Behren, Jeremy Condit, and Eric Brewer, "Why Events Are A Bad
Idea (for High-concurrency Servers)", HotOS IX, May 18-21 2003
- Atul Adya, Jon
Howell, Marvin Theimer, William J. Bolosky, and John
R. Douceur. Cooperative task management without manual stack
management. USENIX 2002.
- D. Stein and D. Shah. Implementing lightweight threads. In
Proceedings of 1992 USENIX Summer conference, pages 1--9, 1992.
Ierusalimschy's (author of Lua)
de Moura, Roberto Ierusalimschy. Revisiting Coroutines. Technical
report MCC15/04, Computer Science Department, PUC-Rio, June 2004.
and Ana Lucia
de Moura, Noemi Rodriguez, Roberto Ierusalimschy. Coroutines in
Lua. Journal of Universal Computer Science, 10(7):910-925, July
R. P., Bershad, B. N., Rashid, R. F., and Dean, R. W. Using
Continuations to Implement Thread Management and Communication in
Operating Systems. In Proceedings of the Thirteenth ACM Symposium on
Operating Systems Principles, pages 122--136, October 1991.
- F. Dabek,
N. Zeldovich, F. Kaashoek, D. Mazieres, and R. Morris. Event-driven
programming for robust software. In Proceedings of the 10th ACM SIGOPS
European Workshop, September 2002.
- Norman Ramsey and Simon Peyton Jones, Featherweight concurrency in a
portable assembly language.