Luego de ejecutar PQsendQuery deberías consultar el valor de la variable result. También deberías usar la función PQflush luego de llamar a PQsendQuery en modo no bloqueante.
Revisa la documentación de esas dos funciones.

Otra cosa que parece inevitable, es que al usar conexiones asincrónicas, tanto para enviar como para recibir hay que obtener el socket y usar el API de sockets para saber cuando el socket está disponible para escribir y/o leer. La libpq debería tener funciones para hacer esto para tener que leer una sola documentación y no varias. Además tener que acceder al socket rompe con las reglas de encapsulamiento y se corren riesgos innecesarios.

Walter Negro


Yadisnel Galvez Velazquez escribió:
Hola lista:
Tengo un pregunta, estoy implementando un modelo de ejecución de consultas 
asíncrono, utilizando libpq con las funciones 
PQsetnonblocking,PQisBusy,PQconsumeInput y PQsendQuery. Mi duda es si luego de 
ejecutarse el bucle while, en el siguiente fragmento de código, existe la 
seguridad que siempre sea entregada al servidor la consulta con la función 
PQsendQuery???. He probado esto y siempre me funciona pero necesito estar 
seguro.

PGconn* PgconnPtr = PQconnectdb(conex_info);
PQsetnonblocking(PgconnPtr, 1);
while (PQisBusy(PgconnPtr) )
{
   PQconsumeInput(PgconnPtr);
}
int result =PQsendQuery(PgconnPtr, "SELECT * from tabla LIMIT 5");

Saludos...Yadisnel.
--
TIP 7: no olvides aumentar la configuraci�n del "free space map"


__________ Informaci�n de NOD32, revisi�n 4689 (20091215) __________

Este mensaje ha sido analizado con NOD32 antivirus system
http://www.nod32.com



__________ Informaci�n de NOD32, revisi�n 4689 (20091215) __________

Este mensaje ha sido analizado con NOD32 antivirus system
http://www.nod32.com





--
TIP 7: no olvides aumentar la configuraci�n del "free space map"

Responder a