【发布时间】:2013-10-12 14:42:31
【问题描述】:
我正在阅读libpq 参考资料。它同时具有同步和异步方法。但是我发现了一些奇怪的东西。
当我看到PQsendQuery 函数时,它似乎发送了一个查询并立即返回。我希望回调函数会得到通知,但没有这样的事情,手册说 poll 以获取数据可用性。
我不明白为什么异步方法是用轮询的方式写的。无论如何,由于libp 是官方的客户端实现,我相信这种设计应该有充分的理由。那是什么?还是我错过了其他地方提到的正确回调内容?
【问题讨论】:
-
请注意:
libpq有PQsocket函数,它返回套接字的 文件描述符。要获得数据可用性通知,请使用系统 API 监视此套接字。 (kqueue、libdispatch等) -
现在我终于明白了这个设计。这只是阻塞与非阻塞 style 的区别,API 的形式对性能真的没有影响。
标签: postgresql libpq