How (not) to structure applications into threads

Easy ways

Server: one kernel thread per client

Interactive application: one kernel thread per task