diff options
author | Vijay Pai <vpai@google.com> | 2018-02-21 11:31:28 -0800 |
---|---|---|
committer | Vijay Pai <vpai@google.com> | 2018-02-21 11:31:28 -0800 |
commit | 2aa7f88294ad25b4653eba6fef23f71ed7972c16 (patch) | |
tree | 4327273be7f26e4e4bf168dc1d329fb317a9443d /src/core/lib/gprpp | |
parent | 8a9e56eddbc05d853ed3da6cf76ee2a81740acfc (diff) |
Move destructor and Start to implementation
Diffstat (limited to 'src/core/lib/gprpp')
-rw-r--r-- | src/core/lib/gprpp/thd.h | 21 | ||||
-rw-r--r-- | src/core/lib/gprpp/thd_posix.cc | 21 | ||||
-rw-r--r-- | src/core/lib/gprpp/thd_windows.cc | 21 |
3 files changed, 44 insertions, 19 deletions
diff --git a/src/core/lib/gprpp/thd.h b/src/core/lib/gprpp/thd.h index 6e0eb5dfaa..f45e78e7f6 100644 --- a/src/core/lib/gprpp/thd.h +++ b/src/core/lib/gprpp/thd.h @@ -39,26 +39,9 @@ class Thread { Thread(const char* thd_name, void (*thd_body)(void* arg), void* arg, bool* success = nullptr); - ~Thread() { - if (!alive_) { - // This thread never existed, so nothing to do - } else { - GPR_ASSERT(joined_); - } - if (real_) { - gpr_mu_destroy(&mu_); - gpr_cv_destroy(&ready_); - } - } + ~Thread(); - void Start() { - gpr_mu_lock(&mu_); - if (alive_) { - started_ = true; - gpr_cv_signal(&ready_); - } - gpr_mu_unlock(&mu_); - } + void Start(); void Join(); static void Init(); diff --git a/src/core/lib/gprpp/thd_posix.cc b/src/core/lib/gprpp/thd_posix.cc index 4cc3d2be4d..4ded4d3fd5 100644 --- a/src/core/lib/gprpp/thd_posix.cc +++ b/src/core/lib/gprpp/thd_posix.cc @@ -141,6 +141,27 @@ Thread::Thread(const char* thd_name, void (*thd_body)(void* arg), void* arg, } } +Thread::~Thread() { + if (!alive_) { + // This thread never existed, so nothing to do + } else { + GPR_ASSERT(joined_); + } + if (real_) { + gpr_mu_destroy(&mu_); + gpr_cv_destroy(&ready_); + } +} + +void Thread::Start() { + gpr_mu_lock(&mu_); + if (alive_) { + started_ = true; + gpr_cv_signal(&ready_); + } + gpr_mu_unlock(&mu_); +} + void Thread::Join() { if (alive_) { pthread_join(pthread_t(id_), nullptr); diff --git a/src/core/lib/gprpp/thd_windows.cc b/src/core/lib/gprpp/thd_windows.cc index 6e2095fe03..efbed30ac6 100644 --- a/src/core/lib/gprpp/thd_windows.cc +++ b/src/core/lib/gprpp/thd_windows.cc @@ -112,6 +112,27 @@ Thread::Thread(const char* thd_name, void (*thd_body)(void* arg), void* arg, } } +Thread::~Thread() { + if (!alive_) { + // This thread never existed, so nothing to do + } else { + GPR_ASSERT(joined_); + } + if (real_) { + gpr_mu_destroy(&mu_); + gpr_cv_destroy(&ready_); + } +} + +void Thread::Start() { + gpr_mu_lock(&mu_); + if (alive_) { + started_ = true; + gpr_cv_signal(&ready_); + } + gpr_mu_unlock(&mu_); +} + void Thread::Join() { if (alive_) { thd_info* info = (thd_info*)id_; |