]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
Event: replace atomic_t with c++ atomic
authorHaomai Wang <haomai@xsky.com>
Tue, 8 Mar 2016 06:33:45 +0000 (14:33 +0800)
committerHaomai Wang <haomai@xsky.com>
Wed, 29 Jun 2016 04:14:04 +0000 (12:14 +0800)
Signed-off-by: Haomai Wang <haomai@xsky.com>
src/msg/async/Event.cc
src/msg/async/Event.h

index 5bad77605f51b5de2118493f0311daebb130f8d2..df96343451f831a47172b6d73b6863f245b5dcb5 100644 (file)
@@ -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<EventCallbackRef> 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();
index 9cf1a920deeb15cf4b2db7f7e7abdcce51419773..356c74ef8512111393d1af1f23ae3aaa41184018 100644 (file)
 #endif
 #endif
 
-#include "include/atomic.h"
+#include <atomic>
+#include <mutex>
+#include <condition_variable>
+
 #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<EventCallbackRef> external_events;
   vector<FileEvent> file_events;
   EventDriver *driver;