26.10 Summary
The creation of a new thread is normally faster
than the creation of a new process with fork. This alone
can be an advantage in heavily used network servers. Threads
programming, however, is a new paradigm that requires more
discipline.
All threads in a process share global variables
and descriptors, allowing this information to be shared between
different threads. But this sharing introduces synchronization
problems and the Pthread synchronization primitives that we must
use are mutexes and condition variables. Synchronization of shared
data is a required part of almost every threaded application.
When writing functions that can be called by
threaded applications, these functions must be thread-safe.
Thread-specific data is one technique that helps with this, and we
showed an example with our readline function.
We return to the threads model in Chapter 30 with
another server design in which the server creates a pool of threads
when it starts. An available thread from this pool handles the next
client request.
|