↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 6.5
历史版本PostgreSQL 6.5 已于 2004 年 6 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

47.5. 异步通知

Postgres 通过 LISTEN 和 NOTIFY 命令支持异步通知。后端用 LISTEN 命令注册它对某个被命名信号量的关注。当另一个后端执行同名的 NOTIFY 时,所有正在监听该被命名信号量的后端都会被异步通知。通知者不会向监听者传递任何额外的信息。因此,通常任何需要通信的实际数据都是通过关系传递的。

注意

过去,文档曾把异步通知所用的名称与关系或类关联起来。但实际上实现中这两个概念并没有直接联系,这个被命名的信号量并不需要事先定义一个对应的关系。

libpq++ 每当一个已连接的后端收到异步通知时,应用都会得到通知。但是,从后端到前端的通信并不是异步的。 libpq++ 应用必须轮询后端,查看是否有待处理的通知信息。在执行一条查询之后,前端可以调用 PgDatabase::Notifies 查看后端当前是否有可用的通知数据。 PgDatabase::Notifies 从后端的未处理通知列表中返回通知。如果没有来自后端的待处理通知,该函数返回 NULL。 PgDatabase::Notifies 的行为像弹出一个栈。一旦某条通知被 PgDatabase::Notifies 返回,它就被视为已处理,并将从通知列表中移除。

  • PgDatabase::Notifies 从服务器取回待处理的通知。

       PGnotify* PgDatabase::Notifies()
           
    

第二个示例程序演示了异步通知的用法。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。