aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib/gprpp
diff options
context:
space:
mode:
authorGravatar Vijay Pai <vpai@google.com>2018-02-21 11:31:28 -0800
committerGravatar Vijay Pai <vpai@google.com>2018-02-21 11:31:28 -0800
commit2aa7f88294ad25b4653eba6fef23f71ed7972c16 (patch)
tree4327273be7f26e4e4bf168dc1d329fb317a9443d /src/core/lib/gprpp
parent8a9e56eddbc05d853ed3da6cf76ee2a81740acfc (diff)
Move destructor and Start to implementation
Diffstat (limited to 'src/core/lib/gprpp')
-rw-r--r--src/core/lib/gprpp/thd.h21
-rw-r--r--src/core/lib/gprpp/thd_posix.cc21
-rw-r--r--src/core/lib/gprpp/thd_windows.cc21
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_;