From: | Qingqing Zhou <zhouqq(at)cs(dot)toronto(dot)edu> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Magnus Hagander <mha(at)sollentuna(dot)net>, pgsql-hackers(at)postgresql(dot)org, Merlin Moncure <merlin(dot)moncure(at)rcsonline(dot)com>, Andrew Dunstan <andrew(at)dunslane(dot)net> |
Subject: | Re: [PATCHES] Win32 CHECK_FOR_INTERRUPTS() performance |
Date: | 2005-10-23 20:22:26 |
Message-ID: | Pine.LNX.4.58.0510231610370.17114@josh.db |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Sun, 23 Oct 2005, Tom Lane wrote:
> "Magnus Hagander" <mha(at)sollentuna(dot)net> writes:
>
> In the spirit of incremental improvement ... I've taken Magnus' version
> and added the proposed change to re-enable Qingqing's patch by skipping
> WaitForSingleObjectEx altogether in the CHECK_FOR_INTERRUPTS code path.
> I also removed WaitForSingleObjectEx in pgwin32_poll_signals(), which
> AFAICS should be just like CHECK_FOR_INTERRUPTS. I think this is what
> we are proposing to actually apply to 8.1beta4. I can't test it though,
> so please check it over...
>
Questions:
Are we asserting that
UNBLOCKED_SIGNAL_QUEUE() != 0
then
WaitForSingleObjectEx(0)==WAIT_OBJECT_0
If so, we can put this assertion in. Seems there is some race. In
pg_queue_signal(), we do it like this:
enter_critical_section();
mask the signal;
leave_critical_section();
SetEvent();
That is, we may detect the value first before we got event. So at least
the above assertion is not correct. This may cause other problems, just
for a quick feedback.
Regards,
Qingqing
From | Date | Subject | |
---|---|---|---|
Next Message | Qingqing Zhou | 2005-10-23 20:33:06 | Re: [PATCHES] Win32 CHECK_FOR_INTERRUPTS() performance |
Previous Message | Magnus Hagander | 2005-10-23 20:14:28 | Re: [PATCHES] Win32 CHECK_FOR_INTERRUPTS() performance |