I have tried to use the RTS thread packages with MySQL but stumbled on the following problems:
They use old versions of many POSIX calls and it is very tedious to make wrappers for all functions. I am inclined to think that it would be easier to change the thread libraries to the newest POSIX specification.
      Some wrappers are currently written. See
      mysys/my_pthread.c for more info.
    
At least the following should be changed:
      pthread_get_specific should use one argument.
      sigwait should take two arguments. A lot of
      functions (at least pthread_cond_wait,
      pthread_cond_timedwait()) should return the
      error code on error. Now they return -1 and set
      errno.
    
      Another problem is that user-level threads use the
      ALRM signal and this aborts a lot of functions
      (read, write,
      open...). MySQL should do a retry on interrupt
      on all of these but it is not that easy to verify it.
    
The biggest unsolved problem is the following:
      To get thread-level alarms I changed
      mysys/thr_alarm.c to wait between alarms with
      pthread_cond_timedwait(), but this aborts with
      error EINTR. I tried to debug the thread
      library as to why this happens, but couldn't find any easy
      solution.
    
If someone wants to try MySQL with RTS threads I suggest the following:
Change functions MySQL uses from the thread library to POSIX. This shouldn't take that long.
          Compile all libraries with the
          -DHAVE_rts_threads.
        
          Compile thr_alarm.
        
          If there are some small differences in the implementation,
          they may be fixed by changing
          my_pthread.h and
          my_pthread.c.
        
          Run thr_alarm. If it runs without any
          „warning,“ „error,“ or aborted
          messages, you are on the right track. Here is a successful run
          on Solaris:
        
Main thread: 1 Thread 0 (5) started Thread: 5 Waiting process_alarm Thread 1 (6) started Thread: 6 Waiting process_alarm process_alarm thread_alarm Thread: 6 Slept for 1 (1) sec Thread: 6 Waiting process_alarm process_alarm thread_alarm Thread: 6 Slept for 2 (2) sec Thread: 6 Simulation of no alarm needed Thread: 6 Slept for 0 (3) sec Thread: 6 Waiting process_alarm process_alarm thread_alarm Thread: 6 Slept for 4 (4) sec Thread: 6 Waiting process_alarm thread_alarm Thread: 5 Slept for 10 (10) sec Thread: 5 Waiting process_alarm process_alarm thread_alarm Thread: 6 Slept for 5 (5) sec Thread: 6 Waiting process_alarm process_alarm ... thread_alarm Thread: 5 Slept for 0 (1) sec end
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.

