PostgreSQL Source Code  git master
barrier.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * barrier.h
4  * Barriers for synchronizing cooperating processes.
5  *
6  * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
9  * src/include/storage/barrier.h
10  *
11  *-------------------------------------------------------------------------
12  */
13 #ifndef BARRIER_H
14 #define BARRIER_H
15 
16 /*
17  * For the header previously known as "barrier.h", please include
18  * "port/atomics.h", which deals with atomics, compiler barriers and memory
19  * barriers.
20  */
21 
23 #include "storage/spin.h"
24 
25 typedef struct Barrier
26 {
28  int phase; /* phase counter */
29  int participants; /* the number of participants attached */
30  int arrived; /* the number of participants that have
31  * arrived */
32  int elected; /* highest phase elected */
33  bool static_party; /* used only for assertions */
36 
37 extern void BarrierInit(Barrier *barrier, int num_workers);
38 extern bool BarrierArriveAndWait(Barrier *barrier, uint32 wait_event_info);
41 extern int BarrierAttach(Barrier *barrier);
42 extern bool BarrierDetach(Barrier *barrier);
43 extern int BarrierPhase(Barrier *barrier);
45 
46 #endif /* BARRIER_H */
bool BarrierArriveAndDetachExceptLast(Barrier *barrier)
Definition: barrier.c:213
int BarrierParticipants(Barrier *barrier)
Definition: barrier.c:281
bool BarrierArriveAndDetach(Barrier *barrier)
Definition: barrier.c:203
int BarrierAttach(Barrier *barrier)
Definition: barrier.c:236
int BarrierPhase(Barrier *barrier)
Definition: barrier.c:265
void BarrierInit(Barrier *barrier, int num_workers)
Definition: barrier.c:100
bool BarrierArriveAndWait(Barrier *barrier, uint32 wait_event_info)
Definition: barrier.c:125
struct Barrier Barrier
bool BarrierDetach(Barrier *barrier)
Definition: barrier.c:256
unsigned int uint32
Definition: c.h:441
static THREAD_BARRIER_T barrier
Definition: pgbench.c:492
int slock_t
Definition: s_lock.h:975
bool static_party
Definition: barrier.h:33
int participants
Definition: barrier.h:29
int elected
Definition: barrier.h:32
ConditionVariable condition_variable
Definition: barrier.h:34
int arrived
Definition: barrier.h:30
slock_t mutex
Definition: barrier.h:27
int phase
Definition: barrier.h:28