この項では MIT-pthreads を使用した幾つかの問題について説明します。
Linux には、MIT-pthreads は使用できません。その代わり実装した LinuxThreads を使用します。項2.13.1. 「Linux の注釈」 を参照してください。
システムがネイティブのスレッドをサポートしていない場合、MIT-pthreads パッケージを使用して MySQL を構築する必要があります。これには旧 FreeBSD システム、SunOS 4.x、Solaris 2.4 およびそれ以前、並びにその他幾つかが含まれます。項2.1.1. 「MySQL Community Server がサポートしているオペレーティングシステム」 を参照してください。
MIT-pthreads は MySQL 5.1 のソース配布には含まれていません。このパッケージが必要な場合は、http://dev.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz から別途ダウンロードする必要があります。
        ダウンロードしたら、このソースアーカイブを
        MySQL
        ソースディレクトリの最上段に抽出します。抽出すると
        mit-pthreads
        のサブディレクトリが作成されます。
      
            ほとんどのシステムで、MIT-pthreads を
            configure を
            --with-mit-threads
            オプションで実行すると使用できます。
          
shell> ./configure --with-mit-threads
このコードへの変更を最小限に抑えるために、MIT-pthreads を使用したソース以外のディレクトリでのビルドはサポートしていません。
            MIT-pthreads
            の使用を決定する確認はサーバーのコードを処理する設定プロセスの実行中にのみ行われます。--without-server
            を使用してクライアントコードのみのビルドに配布を設定した場合、クライアントは
            MIT-pthreads
            を使用するどうかを判断できないため、デフォルトで
            Unix
            ソケット接続を使用します。なぜなら、Unix
            ソケットはプラットフォームによっては
            MIT-pthreads
            では動作しないため、クライアントのプログラムを実行する際、-h
            あるいは --host を
            localhost
            以外の値で使用する必要があります。
          
            MySQL を MIT-pthreads
            でコンパイルした場合、システムロックはパフォーマンス上の理由でデフォルトで無効になります。システムロックを
            --external-locking
            オプションで使用するようにサーバーに指定できます。2
            台の MySQL
            サーバーを同じデータファイルに稼働する場合にのみこれは必要ですが、いずれにしろこのやり方は推奨していません。
          
            スレッド bind()
            コマンドがエラーメッセージ (少なくとも
            Solaris では)
            なしでソケットとのバインドに失敗する場合があります。その結果サーバーへのすべての接続が失敗に終わります。例
            :
          
shell> mysqladmin version
mysqladmin: connect to server at '' failed;
error: 'Can't connect to mysql server on localhost (146)'
この問題を解決するには mysqld サーバーを停止してそれを再起動します。これはサーバーを強制的に停止して直ぐに再起動した場合にのみ起こります。
            MIT-pthreads
            の使用により、sleep()
            のシステムコールの
            SIGINT (ブレーク)
            での割り込みはありません。これは
            mysqladmin --sleep
            を実行すると分かります。割り込みが行われプロセスが停止するまで
            sleep()
            コールが終了するのを待つ必要があります。
          
リンク時に以下の警告メッセージ (少なくとも Solaris で) が表示される場合がありますが、無視して構いません。
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
その他の警告も無視して構いません。
implicit declaration of function `int strtoll(...)' implicit declaration of function `int strtoul(...)'
            MIT-pthread と連動する
            readline
            はまだありません。(これは必要ありませんが、興味あるユーザーがいるかも知れません。
          
