繁体   English   中英

如何让 Postgres 后台工作人员在有信号时睡觉和醒来?

[英]How to make a Postgres background workers sleep and wake up on a signal?

PostgreSQL 利用后台工作者来允许进程以并发方式工作,并且他们有一个 API 供后端/扩展开发人员控制它们。 到目前为止,我已经成功地在一个演示扩展中使用了这个功能,成功地产生了一些工作人员。

我的情况是,我的一名工人必须等待另一名工人完成。 到目前为止,我正在做的是一个空闲工人的无限循环,直到等待的工人完成,这可能非常低效。 所以我想知道如何让空闲进程休眠直到发送一些信号? 我会寻找什么? 是否有一个扩展程序可以做类似的事情,以便我可以用作指导?

您可以使用咨询锁。 它们与交易无关。

另一种选择是使用后端提供的“轻量级锁”(LWlock),即闩锁。

我认为做这样的事情的官方方法是使用条件变量,在文件 src/backend/storage/lmgr/condition_variable.c 中实现

我没有看到它被用于任何“contrib”扩展,但是,只是核心代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM