Postgres soporta notificaci�n as�ncrona a trav�s de los comandos LISTEN y NOTIFY. Un servidor registra su interes en un sem�foro particular con el comando LISTEN. Todos los servidores que est�n escuchando un sem�foro particular identificado por su nombre recibir�n una notificaci�n as�ncrona cuando otro servidor ejecute un NOTIFY para ese nombre. No se pasa ninguna otra informaci�n desde el servidor que notifica al servidor que escucha. Por ello, t�picamente, cualquier dato actual que se necesite comunicar se transfiere a trav�s de la relaci�n.
En el pasado, la documentaci�n ten�a asociados los nombres utilizados para las notificaciones as�ncronas con relaciones o clases. Sin embargo, no hay de hecho uni�n directa de los dos conceptos en la implementaci�n, y los sem�foros identificados con un nombre de hecho no necesitan tener una relaci�n correspondiente previamente definida. |
Las aplicaciones con libpq++ son notificadas cada vez que un servidor al que est�n conectadas recibe una notificaci�n as�ncrona. Sin embargo la comunicaci�n entre el servidor y la aplicaci�n cliente no es as�ncrona. La aplicaci�n con libpq++ debe llamar al servidor para ver si hay informaci�n de alguna notificaci�n pendiente. Tras la ejecuci�n de una consulta, una aplicaci�n cliente puede llamar a PgDatabase::Notifies para ver si en ese momento se encuentra pendiente alg�n dato de notificaci�n desde el servidor. PgDatabase::Notifies devuelve la notificaci�n de una lista de notificaciones pendientes de manipular desde el servidor. La funci�n devuelve NULL si no hay notificaciones pendientes en el servidor. PgDatabase::Notifies se comporta como el reparto de una pila. Una vez que PgDatabase::Notifies ha devuelto la notificaci�n, esta se considera manipulada y se elimina de la lista de
PgDatabase::Notifies recupera notificaciones pendientes del servidor.
PGnotify* PgDatabase::Notifies() |
El segundo programa de muestra da un ejemplo del uso de notificaciones as�ncronas.