19 #ifndef GRPCPP_IMPL_CODEGEN_SYNC_H
20 #define GRPCPP_IMPL_CODEGEN_SYNC_H
24 #ifdef GPR_HAS_PTHREAD_H
35 #include "absl/synchronization/mutex.h"
49 #ifdef GRPCPP_ABSEIL_SYNC
51 using Mutex = absl::Mutex;
52 using MutexLock = absl::MutexLock;
53 using ReleasableMutexLock = absl::ReleasableMutexLock;
54 using CondVar = absl::CondVar;
66 void Lock() ABSL_EXCLUSIVE_LOCK_FUNCTION() {
69 void Unlock() ABSL_UNLOCK_FUNCTION() {
77 #ifdef GPR_HAS_PTHREAD_H
78 pthread_mutex_t do_not_use_pth_;
106 if (!released_) mu_->Unlock();
120 bool released_ =
false;
146 template <
typename Predicate>
147 static void WaitUntil(CondVar* cv, Mutex* mu, Predicate pred) {
virtual void gpr_cv_init(gpr_cv *cv)=0
virtual int gpr_cv_wait(gpr_cv *cv, gpr_mu *mu, gpr_timespec abs_deadline)=0
virtual void gpr_mu_destroy(gpr_mu *mu)=0
virtual void gpr_mu_unlock(gpr_mu *mu)=0
virtual void gpr_mu_init(gpr_mu *mu)=0
virtual void gpr_cv_destroy(gpr_cv *cv)=0
virtual gpr_timespec gpr_inf_future(gpr_clock_type type)=0
virtual void gpr_cv_signal(gpr_cv *cv)=0
virtual void gpr_mu_lock(gpr_mu *mu)=0
virtual void gpr_cv_broadcast(gpr_cv *cv)=0
void Signal()
Definition: sync.h:131
CondVar()
Definition: sync.h:125
CondVar(const CondVar &)=delete
CondVar & operator=(const CondVar &)=delete
~CondVar()
Definition: sync.h:126
void SignalAll()
Definition: sync.h:132
void Wait(Mutex *mu)
Definition: sync.h:134
std::mutex do_not_use_sth_
Definition: sync.h:76
Mutex()
Definition: sync.h:60
void Lock() ABSL_EXCLUSIVE_LOCK_FUNCTION()
Definition: sync.h:66
Mutex & operator=(const Mutex &)=delete
gpr_mu mu_
Definition: sync.h:75
Mutex(const Mutex &)=delete
void Unlock() ABSL_UNLOCK_FUNCTION()
Definition: sync.h:69
~Mutex()
Definition: sync.h:61
MutexLock(const MutexLock &)=delete
MutexLock(Mutex *mu) ABSL_EXCLUSIVE_LOCK_FUNCTION(mu)
Definition: sync.h:87
~MutexLock() ABSL_UNLOCK_FUNCTION()
Definition: sync.h:90
MutexLock & operator=(const MutexLock &)=delete
ReleasableMutexLock(const ReleasableMutexLock &)=delete
~ReleasableMutexLock() ABSL_UNLOCK_FUNCTION()
Definition: sync.h:105
void Release() ABSL_UNLOCK_FUNCTION()
Definition: sync.h:112
ReleasableMutexLock(Mutex *mu) ABSL_EXCLUSIVE_LOCK_FUNCTION(mu)
Definition: sync.h:101
ReleasableMutexLock & operator=(const ReleasableMutexLock &)=delete
@ GPR_CLOCK_REALTIME
Realtime clock.
Definition: gpr_types.h:36
#define GPR_DEBUG_ASSERT(x)
Definition: log.h:101
pthread_cond_t gpr_cv
Definition: sync_posix.h:46
pthread_mutex_t gpr_mu
Definition: sync_posix.h:45
An Alarm posts the user-provided tag to its associated completion queue or invokes the user-provided ...
Definition: alarm.h:33
CoreCodegenInterface * g_core_codegen_interface
Definition: completion_queue.h:96