Re: Synchronization primitives (Was: Re: An example of bugs for Hot Standby) - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Synchronization primitives (Was: Re: An example of bugs for Hot Standby)
Date
Msg-id 16135.1264011365@sss.pgh.pa.us
Whole thread Raw
In response to Synchronization primitives (Was: Re: An example of bugs for Hot Standby)  (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>)
Responses Re: Synchronization primitives (Was: Re: An example of bugs for Hot Standby)  (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>)
List pgsql-hackers
Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes:
> Streaming Replication introduces a few places with a polling pattern
> like this (in pseudocode):

> while()
> {
>   /* Check if variable in shared has advanced beoynd X */
>   SpinLockAcquire()
>   localvar = sharedvar;
>   SpinLockRelease()
>   if (localvar > X)
>     break;

>   /* Not yet. Sleep
>   pg_usleep(100);
> }

I trust there's a CHECK_FOR_INTERRUPTS in there ...

> It would be nice to have a new synchronization primitive for that.

Maybe.  The lock, the variable, the comparison operation, and the sleep
time all seem rather specific to each application.  Not sure that it'd
really buy much to try to turn it into a generic subroutine.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Heikki Linnakangas
Date:
Subject: Synchronization primitives (Was: Re: An example of bugs for Hot Standby)
Next
From: Simon Riggs
Date:
Subject: Re: Synchronization primitives (Was: Re: An example of bugs for Hot Standby)