複数のスレッドからMySQL呼び出しを行うかなり大規模なCアプリケーションのメンテナーとして、各スレッドで新しい接続を確立するだけで問題はなかったと言えます。私が遭遇したいくつかの警告:
- 編集:この箇条書きはバージョン<5.5にのみ適用されるようです。適切なバージョンについては、このページを参照してください : すでに行っていると言うように、
libmysqlclient_r
に対してリンクします 。 -
mysql_library_init()<を呼び出します/ code>
(一度、main()
から )。マルチスレッド環境での使用に関するドキュメントを読んで、なぜそれが必要なのかを確認してください。 - 新しい
MYSQL
を作成しますmysql_init()
を使用した構造 各スレッドで。これには、mysql_thread_initを呼び出すという副作用があります。 ()
あなたのために。mysql_real_connect()
いつものように、各スレッド内で、スレッド固有のMYSQL構造体を使用します。 - 多数のスレッドを作成/破棄する場合は、
mysql_thread_end()
各スレッドの最後(およびmysql_library_end()
main()
の最後に )。とにかくそれは良い習慣です。
基本的に、 MYSQL
を共有しないでください 構造体またはその構造体に固有に作成されたもの(つまり、 MYSQL_STMT
s)そしてそれはあなたが期待するように動作します。
これは、私にとって接続プールを作成するよりも作業が少ないようです。