Differences Between Different Thread Packages
MySQL is very dependent on the thread package used. So when choosing a good platform for MySQL, the thread package is very important.
There are at least three types of thread packages:
- User threads in a single process
Thread switching is managed with alarms and the threads library manages all non-thread-safe functions with locks. Read, write, and select operations are usually managed with a thread-specific select that switches to another thread if the running threads have to wait for data. If the user thread packages are integrated in the standard libs (FreeBSD and BSDI threads), the thread package requires less overhead than thread packages that have to map all unsafe calls (MIT-pthreads, FSU Pthreads, and RTS threads). In some environments (for example, SCO), all system calls are thread-safe, so the mapping can be done very easily (FSU Pthreads on SCO). Downside: all mapped calls take a little time and it’s quite tricky to be able to handle all situations. There are usually also some system calls that are not handled by the thread package (like MIT-pthreads and sockets). Thread scheduling isn’t always optimal.
- User threads in separate processes
Thread switching is done by the kernel and all data is shared between threads. The thread package manages the standard thread calls to allow sharing data between threads. LinuxThreads is using this method. Downside: lots of processes. Thread creating is slow. If one thread dies the rest are usually ...