Re: [INTERFACES] libpq + multiple connections ... - Mailing list pgsql-interfaces

From E.E. Mellor
Subject Re: [INTERFACES] libpq + multiple connections ...
Date
Msg-id Pine.SOL.4.10a.9911301205550.5846-100000@red.csi.cam.ac.uk
Whole thread Raw
In response to Re: [INTERFACES] libpq + multiple connections ...  (Roberto Joao Lopes Garcia <roberto@mha.com.br>)
List pgsql-interfaces
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.



pgsql-interfaces by date:

Previous
From: Michael Meskes
Date:
Subject: Re: [INTERFACES] Spanish format on date and numbers
Next
From: "E.E. Mellor"
Date:
Subject: Re: [INTERFACES] Asynchronous connection functions - patch submitted