В модела на изпълнение на еднонишкова програма, потокът на изпълнение не може да бъде прекъснат от данни, връщащи се от асинхронна заявка или по-общо мрежов сокет. Само сигнали (SIGTERM
и приятели) може да прекъсне потока, но сигналите не могат да бъдат закачени към постъпващите данни.
Ето защо не е възможно да имате обратно извикване, за да получавате известия за входящи данни. Частта от код в libpq, която би била необходима за излъчване на обратното извикване, никога няма да се изпълни, ако вашият код не го извика. И ако трябва да го извикате, това обезсмисля целия смисъл на обратното извикване.
Има библиотеки като Qt
които предоставят обратни извиквания, но те са архитектурирани от самото начало с основен цикъл, който действа като процесор за събития. Потребителският код е организиран в обратни извиквания и е възможна обработка на входящи данни въз основа на събития. Но в този случай библиотеката поема собствеността върху потока на изпълнение, което означава, че нейният основен цикъл анкетира източниците на данни. Това просто прехвърля отговорността към друга част от кода извън libpq.