Re: Question on win32 semaphore simulation

From: "Magnus Hagander" <mha(at)sollentuna(dot)net>
To: "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "Qingqing Zhou" <zhouqq(at)cs(dot)toronto(dot)edu>
Cc: <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Question on win32 semaphore simulation
Date: 2006-04-19 09:02:42
Message-ID: 6BCB9D8A16AC4241919521715F4D8BCEA352BC@algol.sollentuna.se
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> > (2) the killer function is PGSemaphoreReset(). There is no direct
> > function for this in Win32 either.
>
> If you can do PGSemaphoreTryLock, then Reset need only be a
> loop around it (cf. posix_sema.c). In current usage Reset
> doesn't have to be very efficient at all, because it's only
> used during backend startup to bring the semaphore to a known state.
>
> > (1) semctl(SETVAL, val=0) - there is no other "val" than
> zero is used;
>
> Really? Better look again.
>
> If you think the SysV interface is baroque (which I don't
> disagree with), then you should just get rid of it entirely
> and implement pg_sema.h directly atop the Windows primitives.
> I don't have a lot of sympathy for "let's implement just
> part of SysV because I don't like that other part". There is
> no contract saying that sysv_sema.c might not start using
> SysV features it doesn't use today.

That's what I was thinking when I said "option 3". It shouldn't be *too*
hard, and much cleaner.

//Magnus

Browse pgsql-hackers by date

  From Date Subject
Next Message Adrian Maier 2006-04-19 09:31:23 concurrent transactions inside the same connection
Previous Message energumen@buaa.edu.cn 2006-04-19 06:58:21 Re: how can i get the binary format of timestamp?