This article is from the Threads Programming FAQ, by Bryan O'Sullivan email@example.com with numerous contributions by others.
A context switch between two threads in a single process is
"considerably" cheaper than a context switch between two processes. In
addition, the fact that all data except for stack and registers are
shared between threads makes them a natural vehicle for expressing
tasks that can be broken down into subtasks that can be run