init
This commit is contained in:
46
db_include/storage/barrier.h
Executable file
46
db_include/storage/barrier.h
Executable file
@@ -0,0 +1,46 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* barrier.h
|
||||
* Barriers for synchronizing cooperating processes.
|
||||
*
|
||||
* Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* src/include/storage/barrier.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef BARRIER_H
|
||||
#define BARRIER_H
|
||||
|
||||
/*
|
||||
* For the header previously known as "barrier.h", please include
|
||||
* "port/atomics.h", which deals with atomics, compiler barriers and memory
|
||||
* barriers.
|
||||
*/
|
||||
|
||||
#include "storage/condition_variable.h"
|
||||
#include "storage/spin.h"
|
||||
|
||||
typedef struct Barrier
|
||||
{
|
||||
slock_t mutex;
|
||||
int phase; /* phase counter */
|
||||
int participants; /* the number of participants attached */
|
||||
int arrived; /* the number of participants that have
|
||||
* arrived */
|
||||
int elected; /* highest phase elected */
|
||||
bool static_party; /* used only for assertions */
|
||||
ConditionVariable condition_variable;
|
||||
} Barrier;
|
||||
|
||||
extern void BarrierInit(Barrier *barrier, int num_workers);
|
||||
extern bool BarrierArriveAndWait(Barrier *barrier, uint32 wait_event_info);
|
||||
extern bool BarrierArriveAndDetach(Barrier *barrier);
|
||||
extern bool BarrierArriveAndDetachExceptLast(Barrier *barrier);
|
||||
extern int BarrierAttach(Barrier *barrier);
|
||||
extern bool BarrierDetach(Barrier *barrier);
|
||||
extern int BarrierPhase(Barrier *barrier);
|
||||
extern int BarrierParticipants(Barrier *barrier);
|
||||
|
||||
#endif /* BARRIER_H */
|
||||
Reference in New Issue
Block a user