• H
    Introduce latches. A latch is a boolean variable, with the capability to · 2746e5f2
    Heikki Linnakangas 提交于
    wait until it is set. Latches can be used to reliably wait until a signal
    arrives, which is hard otherwise because signals don't interrupt select()
    on some platforms, and even when they do, there's race conditions.
    
    On Unix, latches use the so called self-pipe trick under the covers to
    implement the sleep until the latch is set, without race conditions. On
    Windows, Windows events are used.
    
    Use the new latch abstraction to sleep in walsender, so that as soon as
    a transaction finishes, walsender is woken up to immediately send the WAL
    to the standby. This reduces the latency between master and standby, which
    is good.
    
    Preliminary work by Fujii Masao. The latch implementation is by me, with
    helpful comments from many people.
    2746e5f2
Makefile 1.6 KB