Use a long lived WaitEventSet for WaitLatch().
authorThomas Munro <tmunro@postgresql.org>
Thu, 30 Jul 2020 05:08:11 +0000 (17:08 +1200)
committerThomas Munro <tmunro@postgresql.org>
Thu, 30 Jul 2020 05:40:00 +0000 (17:40 +1200)
commit3347c982bab0dd56d5b6cb784521233ba2bbac27
tree8ddbf152439cb43c4a0e0b8ca72d62cd126931be
parentd6c08e29e7bc8bc3bf49764192c4a9c71fc0b097
Use a long lived WaitEventSet for WaitLatch().

Create LatchWaitSet at backend startup time, and use it to implement
WaitLatch().  This avoids repeated epoll/kqueue setup and teardown
system calls.

Reorder SubPostmasterMain() slightly so that we restore the postmaster
pipe and Windows signal emulation before we reach InitPostmasterChild(),
to make this work in EXEC_BACKEND builds.

Reviewed-by: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Discussion: https://postgr.es/m/CA%2BhUKGJAC4Oqao%3DqforhNey20J8CiG2R%3DoBPqvfR0vOJrFysGw%40mail.gmail.com
src/backend/postmaster/postmaster.c
src/backend/storage/ipc/latch.c
src/backend/utils/init/miscinit.c
src/include/storage/latch.h