On Mon, 29 Nov 1999, Roberto Joao Lopes Garcia wrote:
> >> safely run two PQconnectdb() calls in parallel. But you can open two
> >> connections in sequence and then use them in parallel;
> >
>
> So I could open, for exemple, 5 db connections (with PQconnectdb()) and
> then create 5 threads and use those connections in eache thread. But how
> about use PQreset() or PQfinish() inside the new created threads?
>
> I used to test connection before send a query like bellow:
>
> if(PQstatus(con)==CONNECTION_BAD) {
> PQreset(con);
> if(PQstatus(con)==CONNECTION_BAD) erro_fatal();
> }
>
> Should I protect the calls to those functions by an mutex?? Could it
> work??? Which functions read or alter Qconnectdb()'s static array??
You cannot mix calls to _any_ of PQconnectdb, PQreset, or their
newly-added asynchronous analogues in a thread-safe manner. You need to
use a mutex to protect the calls above.
> I think it is important to mark wich functions in Libpq is thread safe or
> not.
I agree. I'll add a note to that effect to the docs today.
Ewan.