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
Sussman
- The Same Fringe
Problem, the killer example of the usefulness of coroutines, from the
PortlandPatternRepository.
- Continuations And Coroutines, from the PortlandPatternRepository.
- Continuation
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.
- Entry:
Picothreads - lightweight threading for Java
- Continuation based web servers, from Andrew Hyatt's Blog.
- On
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,
Oct. 1978.
- 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.
- Roberto
Ierusalimschy's (author of Lua)
publications, particularly
Ana Lucia
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
2004.
- Draves,
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.