You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by be...@apache.org on 2015/06/04 09:30:28 UTC

[7/9] mesos git commit: Refactor Metrics::Timer to use synchronized.

Refactor Metrics::Timer to use synchronized.

Review: https://reviews.apache.org/r/32362


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/8323bcab
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/8323bcab
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/8323bcab

Branch: refs/heads/master
Commit: 8323bcab310e0f45a53ba46df8b6d90e1cabbbf3
Parents: 4153a7e
Author: Joris Van Remoortere <jo...@gmail.com>
Authored: Thu Jun 4 00:26:04 2015 -0700
Committer: Benjamin Hindman <be...@gmail.com>
Committed: Thu Jun 4 00:26:04 2015 -0700

----------------------------------------------------------------------
 .../include/process/metrics/timer.hpp           | 24 +++++++-------------
 1 file changed, 8 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/8323bcab/3rdparty/libprocess/include/process/metrics/timer.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/include/process/metrics/timer.hpp b/3rdparty/libprocess/include/process/metrics/timer.hpp
index b6f9fbd..92cef2b 100644
--- a/3rdparty/libprocess/include/process/metrics/timer.hpp
+++ b/3rdparty/libprocess/include/process/metrics/timer.hpp
@@ -1,18 +1,19 @@
 #ifndef __PROCESS_METRICS_TIMER_HPP__
 #define __PROCESS_METRICS_TIMER_HPP__
 
+#include <atomic>
 #include <memory>
 #include <string>
 
 #include <process/clock.hpp>
 #include <process/future.hpp>
-#include <process/internal.hpp>
 
 #include <process/metrics/metric.hpp>
 
 #include <stout/duration.hpp>
 #include <stout/hashmap.hpp>
 #include <stout/option.hpp>
+#include <stout/synchronized.hpp>
 #include <stout/try.hpp>
 
 namespace process {
@@ -33,15 +34,13 @@ public:
   {
     Future<double> value;
 
-    process::internal::acquire(&data->lock);
-    {
+    synchronized (data->lock) {
       if (data->lastValue.isSome()) {
         value = data->lastValue.get();
       } else {
         value = Failure("No value");
       }
     }
-    process::internal::release(&data->lock);
 
     return value;
   }
@@ -49,11 +48,9 @@ public:
   // Start the Timer.
   void start()
   {
-    process::internal::acquire(&data->lock);
-    {
+    synchronized (data->lock) {
       data->start = Clock::now();
     }
-    process::internal::release(&data->lock);
   }
 
   // Stop the Timer.
@@ -65,15 +62,13 @@ public:
 
     double value;
 
-    process::internal::acquire(&data->lock);
-    {
+    synchronized (data->lock) {
       t = T(stop - data->start);
 
       data->lastValue = t.value();
 
       value = data->lastValue.get();
     }
-    process::internal::release(&data->lock);
 
     push(value);
 
@@ -94,9 +89,8 @@ public:
 
 private:
   struct Data {
-    Data() : lock(0) {}
-
-    int lock;
+    Data() : lock(ATOMIC_FLAG_INIT) {}
+    std::atomic_flag lock;
     Time start;
     Option<double> lastValue;
   };
@@ -107,12 +101,10 @@ private:
 
     double value;
 
-    process::internal::acquire(&that.data->lock);
-    {
+    synchronized (that.data->lock) {
       that.data->lastValue = T(stop - start).value();
       value = that.data->lastValue.get();
     }
-    process::internal::release(&that.data->lock);
 
     that.push(value);
   }