Re: Reducing overhead of frequent table locks - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Reducing overhead of frequent table locks
Date
Msg-id 3368.1306530111@sss.pgh.pa.us
Whole thread Raw
In response to Re: Reducing overhead of frequent table locks  (Robert Haas <robertmhaas@gmail.com>)
List pgsql-hackers
Robert Haas <robertmhaas@gmail.com> writes:
> When a strong lock is taken or released, we have to increment or
> decrement strong_lock_counts[fasthashpartition].  Here's the question:
> is that atomic?  In other words, suppose that strong_lock_counts[42]
> starts out at 0, and two backends both do ++strong_lock_counts[42].
> Are we guaranteed to end up with "2" in that memory location or might
> we unluckily end up with "1"?  I think the latter is possible... and
> some guard is needed to make sure that doesn't happen.

There are "atomic increment" primitives on most/all multiprocessors,
although availing ourselves of them everywhere will take an amount of
work not unlike developing the spinlock primitives :-(.  You are dead
right that this is unsafe without that.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: Reducing overhead of frequent table locks
Next
From: Alvaro Herrera
Date:
Subject: Re: Re: starting to review the Extend NOT NULL representation to pg_constraint patch