Re: notify with payload (pgkill, notify)
От | James Mansion |
---|---|
Тема | Re: notify with payload (pgkill, notify) |
Дата | |
Msg-id | 47F3FFED.10607@mansionfamily.plus.com обсуждение исходный текст |
Ответ на | Re: notify with payload (pgkill, notify) (Andrew Dunstan <andrew@dunslane.net>) |
Список | pgsql-hackers |
Andrew Dunstan wrote: > If you have an alternative suggestion them you need to make it now. > well, I'm not sure about the non-collapsing business but no matter. > We are not intending to use FDs for message passing. They will be > stored in shared memory. See previous discussions for details: > I'm more interested in replacing the pgkill wakeup mechanism with something that is less sucky on Win32. If you just want to send a wakeup then making a pipe RPC is crazy since it introduces a lot of scheduling. A unix domain datagram socket to which processes can send one byte is enough to toggle the readability if the socket without doing much transfer, and using an atomic flag in shm means that subsequent wakeups can be elided until the process acknowledges the signal, which it should do before scanning the shm queue. I don't see any reason to pass the data through the kernel if you have the shm handling routines, particularly if you have ones that handle spilling. If you're happy with using signals on UNIX (and Tom suggested that SIGUSR usage and signal handling might be one of the concerns about allowing threaded addins) then at least on Win32 it should be worth adding a variant of kill which has a void return and does not try to return information about the validity of the target process id. Personally I try to avoid signals and would prefer an fd level-based signal. But YMMV. I was just wondering if what you're doing could be generalised as a 'post to backend' system that can be used for other duties in future, so you'd need a message type and payload blob rather than assuming that the type is 'notify' and the payload is the payload length. If you had a pgsql extension that was 'wait for notificiation' or 'wait for row in message table' then the wakeup could essentially be directed at code in the target backend, rather than using it as a conduit to target code in the client. James
В списке pgsql-hackers по дате отправления: