0. 相关联文件
- postmaster.c
- ilist.h
1. 启动 background worker(s)
Postgres内核在 PostmasterMain() 函数中初始化 postmaster 守护进程时候,通过 maybe_start_bgworkers() 函数开始尝试启动 background worker(s)。
-
若时机恰当,则启动 background worker(s)。
-
作为一种附带影响,bgworker 控制变量会依据是否需要启动更多 workers 而被设定或重置。
我们对每次调用所启动的 workers数量加以限制,以防在有众多此类请求处于待处理状态时过长时间占用 postmaster 的注意力。只要 StartWorkerNeeded
为真,ServerLoop()
就不会阻塞,并会在处理完其他任何问题之后再次调用此函数。
调用链路如下: