27.12. Comportement des programmes threadés

libpq est réentrante et sûre avec les threads si l'option --enable-thread-safety de configure a été utilisée lors de la compilation de PostgreSQL. Il se peut que vous ayez aussi besoin d'utiliser des options de compilation spécifiques lorsque vous compiler le code de votre application pour utiliser les threads. Référez-vous à la documentation de votre système pour savoir comment construire des applications utilisant les threads.

Une restriction est qu'il ne doit pas y avoir deux threads manipulant le même objet PGconn à la fois. En particulier, vous ne pouvez pas lancer des commandes concurrentes à partir de threads différents à travers le même objet de connexion. (Si vous avez besoin de lancer des commandes concurrentes, lancez plusieurs connexions.)

Les objets PGresult sont en lecture seule après leur création et, du coup, ils peuvent être passés librement entre les threads.

Les fonctions obsolètes PQoidStatus et fe_setauthsvc ne gèrent pas les threads et ne doivent pas être utilisées dans des programmes multithread. PQoidStatus peut être remplacée par PQoidValue. Il n'existe plus aucune bonne raison d'appeler fe_setauthsvc.

Les applications libpq qui utilisent la méthode d'authentification crypt sont liés à la fonction crypt() du système d'exploitation, qui est souvent non sûre avec les threads. Il est préférable d'utiliser la méthode md5, qui est compatible avec les threads sur toutes les plateformes.