Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/base
diff options
context:
space:
mode:
authorSergey Yershov <yershov@corp.mail.ru>2016-03-09 13:18:40 +0300
committerSergey Yershov <yershov@corp.mail.ru>2016-03-23 16:51:32 +0300
commit3ddb131b04059920a2b20d86d669e4baced73a40 (patch)
tree7ca0b70ab2835e33af595b0e851bd3ca599be89b /base
parentbecab05072334170402cf91b088977076c3ebddd (diff)
Review fixes
Diffstat (limited to 'base')
-rw-r--r--base/deferred_task.cpp20
-rw-r--r--base/deferred_task.hpp12
2 files changed, 21 insertions, 11 deletions
diff --git a/base/deferred_task.cpp b/base/deferred_task.cpp
index c769dab253..a3755dbab4 100644
--- a/base/deferred_task.cpp
+++ b/base/deferred_task.cpp
@@ -1,8 +1,11 @@
#include "deferred_task.hpp"
-DeferredTask::DeferredTask(TDuration duration) : m_duration(duration)
+namespace my
{
- m_thread = thread([this] {
+DeferredTask::DeferredTask(TDuration const & duration) : m_duration(duration)
+{
+ m_thread = thread([this]
+ {
unique_lock<mutex> l(m_mutex);
while (!m_terminate)
{
@@ -15,11 +18,15 @@ DeferredTask::DeferredTask(TDuration duration) : m_duration(duration)
if (m_cv.wait_for(l, m_duration) != cv_status::timeout)
continue;
- auto local_fn = move(m_fn);
+ auto fn = move(m_fn);
m_fn = nullptr;
- l.unlock();
- local_fn();
- l.lock();
+
+ if (fn)
+ {
+ l.unlock();
+ fn();
+ l.lock();
+ }
}
});
}
@@ -42,3 +49,4 @@ void DeferredTask::Drop()
}
m_cv.notify_one();
}
+} // namespace my
diff --git a/base/deferred_task.hpp b/base/deferred_task.hpp
index 517953150d..6ef785ef02 100644
--- a/base/deferred_task.hpp
+++ b/base/deferred_task.hpp
@@ -1,12 +1,13 @@
#pragma once
-#include "std/thread.hpp"
#include "std/chrono.hpp"
-#include "std/mutex.hpp"
#include "std/condition_variable.hpp"
#include "std/function.hpp"
+#include "std/mutex.hpp"
+#include "std/thread.hpp"
-
+namespace my
+{
class DeferredTask
{
using TDuration = duration<double>;
@@ -18,12 +19,12 @@ class DeferredTask
bool m_terminate = false;
public:
- DeferredTask(TDuration duration);
+ DeferredTask(TDuration const & duration);
~DeferredTask();
void Drop();
- template<typename TFn>
+ template <typename TFn>
void RestartWith(TFn const && fn)
{
{
@@ -33,3 +34,4 @@ public:
m_cv.notify_one();
}
};
+} // namespace my