Notas MIT-pthreads
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! Leia "Notas Linux (Todas as versões)".
Se seu sistema não fornece suporte nativo a thread, você precisará construir o MariaDB usando o pacote MIT-pthreads. Isto inclui antigos sistemas FreeBSD, SunOS 4.X, Solaris 2.4 e anteriores entre outros. Leia "Sistemas Operacionais suportados pelo MySQL".
Note que a partir do MariaDB 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 MariaDB. 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 MariaDB é 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 MariaDB 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 comSIGINT
(break). Isto só é percebido quando você executamysqladmin --sleep
. Você deve esperar pela chamadasleep()
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.)