From e515c9dfea29c1ca7e2dd575486e36322c22973e Mon Sep 17 00:00:00 2001 From: Haomai Wang Date: Tue, 8 Mar 2016 14:33:45 +0800 Subject: [PATCH] Event: replace atomic_t with c++ atomic Signed-off-by: Haomai Wang --- src/msg/async/Event.cc | 8 ++++---- src/msg/async/Event.h | 7 +++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/msg/async/Event.cc b/src/msg/async/Event.cc index 5bad77605f5..df96343451f 100644 --- a/src/msg/async/Event.cc +++ b/src/msg/async/Event.cc @@ -300,7 +300,7 @@ int EventCenter::process_events(int timeout_microseconds) auto now = clock_type::now(); // If exists external events, don't block - if (external_num_events.read()) { + if (external_num_events.load()) { tv.tv_sec = 0; tv.tv_usec = 0; next_time = now; @@ -365,14 +365,14 @@ int EventCenter::process_events(int timeout_microseconds) if (trigger_time) numevents += process_time_events(); - if (external_num_events.read()) { + if (external_num_events.load()) { external_lock.Lock(); if (external_events.empty()) { external_lock.Unlock(); } else { deque cur_process; cur_process.swap(external_events); - external_num_events.set(0); + external_num_events.store(0); external_lock.Unlock(); while (!cur_process.empty()) { EventCallbackRef e = cur_process.front(); @@ -390,7 +390,7 @@ void EventCenter::dispatch_event_external(EventCallbackRef e) { external_lock.Lock(); external_events.push_back(e); - uint64_t num = external_num_events.inc(); + uint64_t num = ++external_num_events; external_lock.Unlock(); if (!in_thread()) wakeup(); diff --git a/src/msg/async/Event.h b/src/msg/async/Event.h index 9cf1a920dee..356c74ef851 100644 --- a/src/msg/async/Event.h +++ b/src/msg/async/Event.h @@ -37,7 +37,10 @@ #endif #endif -#include "include/atomic.h" +#include +#include +#include + #include "include/Context.h" #include "include/unordered_map.h" #include "common/ceph_time.h" @@ -108,7 +111,7 @@ class EventCenter { int nevent; // Used only to external event Mutex external_lock, file_lock; - atomic_t external_num_events; + std::atomic_ulong external_num_events; deque external_events; vector file_events; EventDriver *driver; -- 2.47.3