pgsql: Support condition variables.

From: Robert Haas <rhaas(at)postgresql(dot)org>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Support condition variables.
Date: 2016-11-22 19:28:42
Message-ID: E1c9GkE-0001hX-Ff@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Support condition variables.

Condition variables provide a flexible way to sleep until a
cooperating process causes an arbitrary condition to become true. In
simple cases, this can be accomplished with a WaitLatch/ResetLatch
loop; the cooperating process can call SetLatch after performing work
that might cause the condition to be satisfied, and the waiting
process can recheck the condition each time. However, if the process
performing the work doesn't have an easy way to identify which
processes might be waiting, this doesn't work, because it can't
identify which latches to set. Condition variables solve that problem
by internally maintaining a list of waiters; a process that may have
caused some waiter's condition to be satisfied must "signal" or
"broadcast" on the condition variable.

Robert Haas and Thomas Munro

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/e8ac886c24776295dd9b025386a821061da8e4d1

Modified Files
--------------
src/backend/access/transam/xact.c | 4 +
src/backend/bootstrap/bootstrap.c | 2 +
src/backend/postmaster/bgwriter.c | 2 +
src/backend/postmaster/checkpointer.c | 2 +
src/backend/postmaster/walwriter.c | 2 +
src/backend/replication/walsender.c | 2 +
src/backend/storage/lmgr/Makefile | 2 +-
src/backend/storage/lmgr/condition_variable.c | 225 ++++++++++++++++++++++++++
src/backend/storage/lmgr/proc.c | 7 +
src/include/storage/condition_variable.h | 59 +++++++
src/include/storage/proc.h | 3 +
src/include/storage/proclist.h | 56 ++++++-
12 files changed, 364 insertions(+), 2 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2016-11-22 20:20:28 pgsql: Improve handling of "UPDATE ... SET (column_list) = row_construc
Previous Message Tom Lane 2016-11-22 19:03:54 pgsql: Doc: add a section in Part II concerning RETURNING.