>> The real problem could be if the process that was signaled to connect to the message queue never handles the interrupt, and we keep waiting forever in shm_mq_receive(). We could add a timeout parameter or just let the user cancel the call: send a cancellation request, use pg_cancel_backend() or set statement_timeout before running this. > > This is valid question - for begin we can use a statement_timeout and we don't need to design some special (if you don't hold some important lock). > My example (the code has prototype quality) is little bit longer, but it work without global lock - the requester doesn't block any other
I'll update the commitfest patch to use this technique.