Lessons Learned - Threads
Very convenient programming abstraction
- leads to clean program design and structure
- rich set of development and debugging tools
High overhead and unpredictable performance
- threads mostly idle, but always pay for state
- scheduling control lost to OS/thread library
- context switching expensive - infrequent execution bursts yields pessimal cache performance