Removed pthread from Once and Gate. Review: https://reviews.apache.org/r/36673
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/1bd50fc5 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/1bd50fc5 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/1bd50fc5 Branch: refs/heads/master Commit: 1bd50fc5c0c0825bab1195c608d9cd2c5b3f0479 Parents: 3817760 Author: Joris Van Remoortere <[email protected]> Authored: Fri Jul 24 14:35:02 2015 -0700 Committer: Benjamin Hindman <[email protected]> Committed: Fri Jul 24 15:29:04 2015 -0700 ---------------------------------------------------------------------- 3rdparty/libprocess/include/process/once.hpp | 23 ++++++++----------- 3rdparty/libprocess/src/gate.hpp | 27 +++++++++-------------- 2 files changed, 19 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/1bd50fc5/3rdparty/libprocess/include/process/once.hpp ---------------------------------------------------------------------- diff --git a/3rdparty/libprocess/include/process/once.hpp b/3rdparty/libprocess/include/process/once.hpp index 7d0d930..4b0cbe0 100644 --- a/3rdparty/libprocess/include/process/once.hpp +++ b/3rdparty/libprocess/include/process/once.hpp @@ -15,6 +15,9 @@ #ifndef __PROCESS_ONCE_HPP__ #define __PROCESS_ONCE_HPP__ +#include <condition_variable> +#include <mutex> + #include <process/future.hpp> #include <stout/nothing.hpp> @@ -27,17 +30,9 @@ namespace process { class Once { public: - Once() : started(false), finished(false) - { - pthread_mutex_init(&mutex, NULL); - pthread_cond_init(&cond, NULL); - } + Once() : started(false), finished(false) {} - ~Once() - { - pthread_cond_destroy(&cond); - pthread_mutex_destroy(&mutex); - } + ~Once() = default; // Returns true if this Once instance has already transitioned to a // 'done' state (i.e., the action you wanted to perform "once" has @@ -50,7 +45,7 @@ public: synchronized (mutex) { if (started) { while (!finished) { - pthread_cond_wait(&cond, &mutex); + synchronized_wait(&cond, &mutex); } result = true; } else { @@ -67,7 +62,7 @@ public: synchronized (mutex) { if (started && !finished) { finished = true; - pthread_cond_broadcast(&cond); + cond.notify_all(); } } } @@ -77,8 +72,8 @@ private: Once(const Once& that); Once& operator = (const Once& that); - pthread_mutex_t mutex; - pthread_cond_t cond; + std::mutex mutex; + std::condition_variable cond; bool started; bool finished; }; http://git-wip-us.apache.org/repos/asf/mesos/blob/1bd50fc5/3rdparty/libprocess/src/gate.hpp ---------------------------------------------------------------------- diff --git a/3rdparty/libprocess/src/gate.hpp b/3rdparty/libprocess/src/gate.hpp index 7f6b3d8..7d5df70 100644 --- a/3rdparty/libprocess/src/gate.hpp +++ b/3rdparty/libprocess/src/gate.hpp @@ -15,7 +15,8 @@ #ifndef __GATE_HPP__ #define __GATE_HPP__ -// TODO(benh): Build implementation directly on-top-of futex's for Linux. +#include <condition_variable> +#include <mutex> #include <stout/synchronized.hpp> @@ -27,21 +28,13 @@ public: private: int waiters; state_t state; - pthread_mutex_t mutex; - pthread_cond_t cond; + std::mutex mutex; + std::condition_variable cond; public: - Gate() : waiters(0), state(0) - { - pthread_mutex_init(&mutex, NULL); - pthread_cond_init(&cond, NULL); - } + Gate() : waiters(0), state(0) {} - ~Gate() - { - pthread_cond_destroy(&cond); - pthread_mutex_destroy(&mutex); - } + ~Gate() = default; // Signals the state change of the gate to any (at least one) or // all (if 'all' is true) of the threads waiting on it. @@ -50,9 +43,9 @@ public: synchronized (mutex) { state++; if (all) { - pthread_cond_broadcast(&cond); + cond.notify_all(); } else { - pthread_cond_signal(&cond); + cond.notify_one(); } } } @@ -65,7 +58,7 @@ public: waiters++; state_t old = state; while (old == state) { - pthread_cond_wait(&cond, &mutex); + synchronized_wait(&cond, &mutex); } waiters--; } @@ -89,7 +82,7 @@ public: { synchronized (mutex) { while (old == state) { - pthread_cond_wait(&cond, &mutex); + synchronized_wait(&cond, &mutex); } waiters--;
