27.12. スレッド化プログラムの振舞い

PostgreSQL配布物からの構築時のconfigureコマンドラインオプションに--enable-thread-safetyが使用されていた場合、libpqは再入可能、かつ、スレッドセーフです。 更に、アプリケーションコードをコンパイルする時にコンパイラのコマンドラインオプションに追加する必要があるかもしれません。 スレッドを有効にしたアプリケーションの構築方法についての情報は、使用するシステムの文書を参照してください。

1つの制限として、異なるスレッドから同時に同一のPGconnオブジェクトを操作することはできません。 具体的には、異なるスレッドから同一接続オブジェクトを介してコマンドを同時に発行することができません。 (コマンドの同時が必要な場合、起動させる接続を複数用意してください。)

PGresult オブジェクトは生成後、読み込み専用となります。 したがって、スレッド間を自由に渡ることができます。

推奨されない関数 PQoidStatusfe_setauthsvc はスレッドセーフではなく、またマルチスレッドプログラムで使用すべきではありません。 PQoidStatusPQoidValue に置き換えることができます。 いかなる場合においても、fe_setauthsvc は呼び出すべきではありません。

crypt認証方式を使用したLibpqアプリケーションはcrypt()オペレーティングシステム関数に依存します。 この関数はスレッドセーフではない場合が多くあります。 全てのプラットフォームでスレッドセーフな md5 方式を使用する方が良いでしょう。