Threads are a natural means of dealing with concurrency. In Systems II, basic thread primitives were introduced and alternatives were presented with simple "echo" server.
- sequential - no concurrency
- concurrency forking separate processes
- concurrency using threads
- multiplexing clients with the select system call
- concurrency using a pool of threads, etc.
The first program assignment revisits (reviews) multithreading in the context of a simple data base. Complications beyond the creating multiple threads - one for each client - are managing concurrent threads that can both query and modify the database. the