Recording Venue:
Guest(s):
Host(s): Michael Alexander
The third part of our concurrency series by Michael and Alexander discusses how to build highly scalable servers. The discussion focusses especially on event-driven servers. As possible solution patterns a reactor-based design is suggested along-side several patterns for multi-threading issues: Reader/Writers Locks, Thread Pools, and Leader/Followers.
Show Notes
Links:
- Brian Goetz’ new book on Concurrency (in principle this is Java specific, but there are many good explanation of general concurrency topics)
- The C++ Network Programming by Doug Schmidt and Steve Huston explains how to use use the C++ framework ACE to build networked and concurrent applications.
- Further, we can recommend the book on Patterns for Parallel Programming
- Here the link to the Leader/Followers pattern, it is also contained in the POSA2 book
- An interesting discussion on how to best implement Reader-Writer Locks
AFAIK, the idea to use multi-threading to implement architectural structure (implying the use of many threads, but many of them extremely small) is based on the work of Dave Cheriton: “Thoth System: Multi-Process Structuring and Portability”, 1982.
Not necessarily only in embedded systems, the use of simplest threads to implement error handling (a.k.a. “vulture threads”) can greatly simplify the complexity.
Descendants of this ‘Thoth’ system were “Waterloo Port” and the early versions of “QNX” (where embedded systems come into play again).
When interested in details, you’re welcome to contact me.
Johan Bezem
http://www.bezem.de/