Re: [PATCHES] Win32 CHECK_FOR_INTERRUPTS() performance

Поиск
Список
Период
Сортировка
От Qingqing Zhou
Тема Re: [PATCHES] Win32 CHECK_FOR_INTERRUPTS() performance
Дата
Msg-id Pine.LNX.4.58.0510242359320.31231@eon.cs
обсуждение исходный текст
Ответ на Re: [PATCHES] Win32 CHECK_FOR_INTERRUPTS() performance  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers

On Mon, 24 Oct 2005, Tom Lane wrote:

> Qingqing Zhou <zhouqq@cs.toronto.edu> writes:
> > I tried to persuade myself that removing all WaitForSingleObjectEx() is
> > safe ... the thing is we will false alarm EINTR as Magnus said (details to
> > repeat it are list below in case).
>
> Just to repeat myself: there were false alarms before.  The interleaving
> you describe could equally well happen if a new signal is sent just
> after the old code executes WaitForSingleObjectEx and sees that a
> previous signal is waiting for it. Both old and new signals can be
> cleared by the recipient before the second signal sender gets as far as
> setting the event.
>

Oh, yeah. Just write the detailed case down for the sake of memory:

-- For previous code -- false alarm case --
1. I am killing you signal A:  enter_crit;  set signal bit;  leave_crit;

2. He *has killed* you signal B:

3. You CHECK_FOR_INTERRUPTS():  enter_crit;  sig(A);  sig(B);  ResetEvent();  leave_crit;

4. I finish my killing:  SetEvent();

Now the event is signaled but the signal is handled already.

Regards,
Qingqing


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Andrew Dunstan
Дата:
Сообщение: Re: [GENERAL] 'a' == 'a '
Следующее
От: mark@mark.mielke.cc
Дата:
Сообщение: Re: PG Killed by OOM Condition