pgsql: Support condition variables. - Mailing list pgsql-committers

From Robert Haas
Subject pgsql: Support condition variables.
Date
Msg-id E1c9GkE-0001hX-Ff@gemulon.postgresql.org
Whole thread Raw
List 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(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Doc: add a section in Part II concerning RETURNING.
Next
From: Tom Lane
Date:
Subject: pgsql: Improve handling of "UPDATE ... SET (column_list) = row_construc