V modelu provádění programu s jedním vláknem nemůže být tok provádění přerušen daty přicházejícími z asynchronního dotazu nebo obecněji síťového soketu. Pouze signály (SIGTERM
a přátelé) mohou přerušit tok, ale signály nelze připojit k příchozím datům.
To je důvod, proč zpětné volání za účelem upozornění na příchozí data není možné. Část kódu v libpq, která by byla nezbytná k odeslání zpětného volání, by se nikdy nespustila, pokud by ji váš kód nevolal. A pokud to musíte zavolat, překazí to smysl zpětného volání.
Existují knihovny jako Qt
které poskytují zpětná volání, ale jsou od základu postaveny s hlavní smyčkou, která funguje jako procesor událostí. Uživatelský kód je organizován ve zpětných voláních a je možné zpracování příchozích dat na základě událostí. Ale v tomto případě knihovna převezme vlastnictví toku provádění, což znamená, že její hlavní smyčka se dotazuje na zdroje dat. To jen přesouvá odpovědnost na jiný kus kódu mimo libpq.