libpq は、PostgreSQL 7.0 現在、同時に同じ PGconn オブジェクトを操作するスレッドがない、という条件下では、スレッドセーフです。 特に、異なるスレッドから、同じ接続オブジェクトを通して同時に問い合わせを発行することはできません (同時に問い合わせを実行する必要がある場合は、接続は複数にしてください)。
PGresult オブジェクトは生成されると読み込み専用となります。 したがって、スレッド間を自由に渡ることができます。
推奨されない関数 PQoidStatus や fe_setauthsvc はスレッドセーフではなく、またマルチスレッドプログラムで使用すべきではありません。 PQoidStatus は PQoidValue に置き換えることができます。 いかなる場合においても、fe_setauthsvc は呼び出すべきではありません。
crypt 暗号化方式を使用した Libpq は crypt オペレーティングシステム関数に依存します。 この関数はスレッドセーフではない場合が多くあります。 全てのプラットフォームでスレッドセーフな MD5 暗号化を使用する方が良いでしょう。