0

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

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

4

2 回答 2

1

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

另一种选择是使用后端可用的“轻量级锁”(LWlock),也就是闩锁。

于 2020-03-04T07:11:27.137 回答
1

我认为执行此类操作的官方方法是使用条件变量,在文件 src/backend/storage/lmgr/condition_variable.c 中实现

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

于 2020-03-04T14:58:47.313 回答