“Solution”: don’t use threads
Example: Harvest/Squid cache
- code manually “inverted”
- uses FSM and one state token per connection
- essentially goto’s with lots of shared state
higher performance
- less overhead, fast context switching, live state
very difficult to develop and maintain
- extremely fragile, messy code