Re: Optimize LISTEN/NOTIFY
От | Thomas Munro |
---|---|
Тема | Re: Optimize LISTEN/NOTIFY |
Дата | |
Msg-id | CA+hUKGLrMGkWDB0cwTa0RqD+AF7O-Ywgck8aVYKwOQnZgYRRug@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Optimize LISTEN/NOTIFY ("Joel Jacobson" <joel@compiler.org>) |
Ответы |
Re: Optimize LISTEN/NOTIFY
|
Список | pgsql-hackers |
On Wed, Jul 23, 2025 at 1:39 PM Joel Jacobson <joel@compiler.org> wrote: > In their patch, in asyn.c's SignalBackends(), they do > SendInterrupt(INTERRUPT_ASYNC_NOTIFY, procno) instead of > SendProcSignal(pid, PROCSIG_NOTIFY_INTERRUPT, procnos[i]). They don't > seem to check if the backend is already signalled or not, but maybe > SendInterrupt() has signal coalescing built-in so it would be a noop > with almost no cost? Yeah: + old_pending = pg_atomic_fetch_or_u32(&proc->pendingInterrupts, interruptMask); + + /* + * If the process is currently blocked waiting for an interrupt to arrive, + * and the interrupt wasn't already pending, wake it up. + */ + if ((old_pending & (interruptMask | SLEEPING_ON_INTERRUPTS)) == SLEEPING_ON_INTERRUPTS) + WakeupOtherProc(proc);
В списке pgsql-hackers по дате отправления: