モノスレッドプログラムの実行モデルでは、非同期クエリ、より一般的にはネットワークソケットから返されるデータによって実行フローを中断することはできません。シグナルのみ(SIGTERM
および友人)はフローを中断する可能性がありますが、受信するデータに信号をフックすることはできません。
そのため、受信データの通知を受け取るためのコールバックを設定することはできません。コールバックを発行するために必要なlibpqのコードは、コードがそれを呼び出さない場合は実行されません。そして、あなたがそれを呼び出さなければならない場合、それはコールバックの全体のポイントを打ち負かします。
Qt
のようなライブラリがあります コールバックを提供しますが、イベントプロセッサとして機能するメインループを使用してゼロから構築されています。ユーザーコードはコールバックで編成されており、受信データのイベントベースの処理が可能です。ただし、この場合、ライブラリが実行フローの所有権を取得します。つまり、そのメインループがデータソースをポーリングします。これは、責任をlibpq以外の別のコードに移すだけです。