Esta seção descreve alguns dos detalhes envolvidos no uso de MIT-pthreads.
        Note que no Linux você NÃO deve usar
        MIT-pthreads mas instalar LinuxThreads! See
        Secção 2.6.2, “Notas Linux (Todas as versões)”.
      
Se seu sistema não fornece suporte nativo a thread, você precisará construir o MySQL usando o pacote MIT-pthreads. Isto inclui antigos sistemas FreeBSD, SunOS 4.X, Solaris 2.4 e anteriores entre outros. See Secção 2.2.3, “Sistemas Operacionais suportados pelo MySQL”.
Note que a partir do MySQL 4.0.2, MIT-pthreads não fazem mais parte da distribuição fonte. Se você precisar deste pacote, você precisa fazer o download dele separadamente em http://www.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz
        Depois do download, extraia este arquivo fonte no nível mais
        alto do diretório de fontes do MySQL. Ele criará um novo
        subdiretório mit-pthreads.
      
            Na maioria dos sitemas, você pode forçar o uso de
            MIT-pthreads executando o configure com a
            opção --with-mit-threads:
          
shell> ./configure --with-mit-threads
Construção em um diretório não fonte não é suportado com o uso de MIT-pthreads, porque nós queremos minimizar nossas alterações para este código.
            As verificações que determinam se MIT-pthreads será usado
            ou não, ocorrerá somente durante a parte do processo de
            configuração que trata com o código do servidor. Se você
            configurou a distribuição usando
            --without-server para construir somente o
            código cliente, clientes não irão saber se o MIT-pthreads
            está sendo usado e irá usar conexões socket Unix por
            padrão. Como os sockets Unix não funcionam sob
            MIT-pthreads, isto significa que você precisará usar
            -h ou --host quando
            executar programas clientes.
          
            Quando o MySQL é compilado usando MIT-pthreads, travas de
            sistema são desabilitadas por padrão por razões de
            performance. Você pode dizer ao servidor para usar travas
            de sistema com a opção
            --external-locking. Isto só é necessário
            se você quiser executar dois servidores MySQL no mesmo
            diretório de dados (no que não é recomendado)
          
            Algumas vezes o comando pthread bind()
            falha ao ligar a um socket sem nenhuma mensagem de erro
            (pelo menos no Solaris). O resultado é que todas conexões
            ao servidor falham. Por exemplo:
          
shell> mysqladmin version
mysqladmin: connect to server at '' failed;
error: 'Can't connect to mysql server on localhost (146)'
            A solução para isto é matar o servidor
            mysqld e reiniciá-lo. Isto só aconteceu
            conosco quando forçamos uma queda do servidor e fizemos uma
            reinicialização imediata.
          
            Com MIT-pthreads, a chamada de sistema
            sleep() não é interrompível com
            SIGINT (break). Isto só é percebido
            quando você executa mysqladmin --sleep.
            Você deve esperar pela chamada sleep()
            para terminar, antes da interrução ser servida e o
            processo parar.
          
Na ligação, você pode receber mensagens de alerta como estes (pelo menos no Solaris); elas podem ser ignoradas:
ld: warning: symbol `_iob' has differing sizes:
    (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
    /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
ld: warning: symbol `__iob' has differing sizes:
    (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
    /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
Alguns outros alertas também podem ser ignorados:
implicit declaration of function `int strtoll(...)' implicit declaration of function `int strtoul(...)'
            Não colocamos readline para funcionar
            com MIT-pthreads. (Isto não é necessário, mas pode ser
            interessante para alguns.)
          
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

