Я читаю libpq
ссылку. Он имеет как синхронные, так и асинхронные методы. Но я обнаружил нечто странное.
Когда я вижу функцию PQsendQuery
, кажется, что она отправляет запрос и немедленно возвращается. И я ожидал, что функция обратного вызова получит уведомление, но этого не было, и в руководстве сказано опросить доступность данных.
Я не понимаю, почему асинхронный метод написан в режиме опроса. В любом случае, поскольку libp
является официальной реализацией клиента, я считаю, что для такого дизайна должна быть веская причина. Что это? Или мне не хватает правильных материалов обратного вызова, упомянутых где-то еще?
libpq
предназначен для однопоточной программы. Это нормально для производительности? 14.10.2013libpq
просто предоставляет это пользователю библиотеки, позволяя использоватьlibpq
с существующими библиотеками событий, такими какlibevent
или Linuxepoll
. Это делаетlibpq
намного более масштабируемым, чем это было бы с блокирующим клиентом (например, kegel.com/c10k .html#threaded), не тратя впустую потоки, ожидающие и ожидающие в базе данных. Так что да, это очень хорошо для производительности. 01.12.2013