DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(mysql.info) thread-packages

Info Catalog (mysql.info) rts-threads (mysql.info) porting
 
 E.5 Differences Between 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 are 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 left hanging and you must kill them all before
      restarting. Thread switching is somewhat expensive.
 
    * Kernel threads. Thread switching is handled by the thread library
      or the kernel and is very fast. Everything is done in one process,
      but on some systems, `ps' may show the different threads. If one
      thread aborts, the whole process aborts. Most system calls are
      thread-safe and should require very little overhead. Solaris,
      HP-UX, AIX and OSF/1 have kernel threads.
 
 In some systems kernel threads are managed by integrating user level
 threads in the system libraries. In such cases, the thread switching
 can only be done by the thread library and the kernel isn't really
 `thread aware.'
 
Info Catalog (mysql.info) rts-threads (mysql.info) porting
automatically generated byinfo2html