主页 > 软件开发  > 

【0407】Postgres内核Conditionvariables(ConditionVariable)设计机

【0407】Postgres内核Conditionvariables(ConditionVariable)设计机

文章目录 1. Postgres 条件变量 1.1 Condition variables 类型声明 1.2 Condition variables 实现 2. 相关函数 功能说明 2.1 初始化一个条件变量 2.2 准备在给定的条件变量上进行等待。 2.3 等待给定的条件变量被发出信号(触发) 2.4 等待条件变量被触发或超时时间到达 2.5 取消任何未决(待定)的sleep操作 2.6 唤醒在条件变量(CV)上 sleeping 时间最长的进程(若存在的话) 2.7 唤醒在给定条件变量上处于睡眠状态的所有进程

1. Postgres 条件变量

Postgres 内核中 “条件变量为一个进程提供了一种等待特定条件出现的方式,而无需知晓其等待的进程的具体身份。 与轻量级锁(LWLock)的等待不同,对条件变量的等待是可以被中断的。条件变量在动态共享内存段中使用是安全可靠的。”

条件变量(condition variables) 实现于 condition_variable.c 文件。

条件变量是一种用于等待特定条件达成的方法。按照惯例,条件变量支持三项操作: (1)sleep; (2)信号(signal),其会唤醒在该条件变量上处于睡眠状态的一个进程; (3)广播(broadcast),它会唤醒在该条件变量上睡眠的所有进程。

在我们的实现中,条件变量使进程进入可中断睡眠状态(所以在条件满足之前能够被取消),并且内部不使用指针(因而在分布式共享内存(DSM)中使用是安全的)。

源码实现相关文件:

condition_variable.h condition_variable.c
标签:

【0407】Postgres内核Conditionvariables(ConditionVariable)设计机由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【0407】Postgres内核Conditionvariables(ConditionVariable)设计机