Hi, On 2023-04-02 15:15:44 -0700, Jeff Davis wrote: > On Sun, 2023-04-02 at 14:35 -0700, Andres Freund wrote: > > Why not offer a function to add a CV to a WES? It seems somehow odd > > to require > > going through condition_variable.c to create a WES. > > I agree that it's a bit odd, but remember that after waiting on a CV's > latch, it needs to re-insert itself into the CV's wait list. > > A WaitEventSetWait() can't do that, unless we move the details of re- > adding to the wait list into latch.c. I considered that, but latch.c > already implements the APIs for WaitEventSet and Latch, so it felt > complex to also make it responsible for ConditionVariable.
I agree that the *wait* has to go through condition_variable.c, but it doesn't seem right that creation of the WES needs to go through condition_variable.c. The only thing that ConditionVariableEventSleep() seems to require is that the WES is waiting for MyLatch. You don't even need a separate WES for that, the already existing WES should suffice. Greetings, Andres Freund