Re: OSDL DBT-2 w/ PostgreSQL 7.3.4 and 7.4beta5
От | Manfred Spraul |
---|---|
Тема | Re: OSDL DBT-2 w/ PostgreSQL 7.3.4 and 7.4beta5 |
Дата | |
Msg-id | 3FA80502.4000905@colorfullife.com обсуждение исходный текст |
Ответ на | Re: OSDL DBT-2 w/ PostgreSQL 7.3.4 and 7.4beta5 (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-hackers |
Tom Lane wrote: >Manfred Spraul <manfred@colorfullife.com> writes: > > >>For multithreaded apps, this is not possible: sigaction is per process. >>Thus the calling application must handle the SIGPIPE signals for libpq - >>either by blocking or ignoring them. We are still discussing the exact >>API. Probably a global state that is accessible through a new function. >> >> > >I think we should also take a hard look at avoiding the problem by using >MSG_NOSIGNAL on platforms that have it, > I think that's the second step. First we need a portable solution, then we can optimize it. The fastest solution is one signal(SIGPIPE, SIG_IGN) in main(), but that requires a change in all libpq users. OTHO there shouldn't be that many multithreaded users. sigprocmask + sigwait could work, but sigprocmask is undefined if multiple threads are running. Is there a portable approach for weak links? libpq would have to call proc_sigmask if linked against libpthread, and sigprocmask if not linked against libpthread. With gcc, I could use 'void proc_sigmask () __attribute__ ((weak, alias ("_sigprocmask")));' or something similar, but this wouldn't be portable either. -- Manfred
В списке pgsql-hackers по дате отправления: