Thomas Munro <thomas.munro@gmail.com> writes:
> It may be madness to try to work around this, but I wonder if we could
> use a static local variable that we update with atomic compare
> exhange, inside PG_SIGNAL_HANDLER_ENTRY(), and
> PG_SIGNAL_HANDLER_EXIT() macros that do nothing on every other system.
> On entry, if you can do 0->1 it means you are allowed to run the
> function. If it's non-zero, set n->n+1 and return immediately: signal
> blocked, but queued for later. On exit, you CAS n->0. If n was > 1,
> then you have to jump back to the top and run the function body again.
And ... we're expending all this effort for what exactly?
regards, tom lane