From 871be852a983c58d5efe9a1001711b4bbfe97ed8 Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Tue, 21 Jan 2020 12:22:14 +1300 Subject: [PATCH 2/3] Use WaitMyLatch() for condition variables. Previously, we condition_variable.c maintained its own reusable WaitEventSet. Let's use the common one, shared by other simple latch waiting code. --- src/backend/storage/lmgr/condition_variable.c | 24 +------------------ 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/src/backend/storage/lmgr/condition_variable.c b/src/backend/storage/lmgr/condition_variable.c index 0e7f07961e..1fdcbd45eb 100644 --- a/src/backend/storage/lmgr/condition_variable.c +++ b/src/backend/storage/lmgr/condition_variable.c @@ -30,9 +30,6 @@ /* Initially, we are not prepared to sleep on any condition variable. */ static ConditionVariable *cv_sleep_target = NULL; -/* Reusable WaitEventSet. */ -static WaitEventSet *cv_wait_event_set = NULL; - /* * Initialize a condition variable. */ @@ -62,23 +59,6 @@ ConditionVariablePrepareToSleep(ConditionVariable *cv) { int pgprocno = MyProc->pgprocno; - /* - * If first time through in this process, create a WaitEventSet, which - * we'll reuse for all condition variable sleeps. - */ - if (cv_wait_event_set == NULL) - { - WaitEventSet *new_event_set; - - new_event_set = CreateWaitEventSet(TopMemoryContext, 2); - AddWaitEventToSet(new_event_set, WL_LATCH_SET, PGINVALID_SOCKET, - MyLatch, NULL); - AddWaitEventToSet(new_event_set, WL_EXIT_ON_PM_DEATH, PGINVALID_SOCKET, - NULL, NULL); - /* Don't set cv_wait_event_set until we have a correct WES. */ - cv_wait_event_set = new_event_set; - } - /* * If some other sleep is already prepared, cancel it; this is necessary * because we have just one static variable tracking the prepared sleep, @@ -176,15 +156,13 @@ ConditionVariableTimedSleep(ConditionVariable *cv, long timeout, while (true) { - WaitEvent event; bool done = false; /* * Wait for latch to be set. (If we're awakened for some other * reason, the code below will cope anyway.) */ - (void) WaitEventSetWait(cv_wait_event_set, cur_timeout, &event, 1, - wait_event_info); + (void) WaitMyLatch(cur_timeout, wait_event_info); /* Reset latch before examining the state of the wait list. */ ResetLatch(MyLatch); -- 2.20.1