]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Event: replace Mutex with c++ mutex
authorHaomai Wang <haomai@xsky.com>
Tue, 8 Mar 2016 06:35:17 +0000 (14:35 +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 df96343451f831a47172b6d73b6863f245b5dcb5..0a6afb4654cf6a09cbbbab7211b13944fe9b9130 100644 (file)
@@ -117,7 +117,7 @@ int EventCenter::init(int n)
 EventCenter::~EventCenter()
 {
   {
-    Mutex::Locker l(external_lock);
+    std::lock_guard<std::mutex> l(external_lock);
     while (!external_events.empty()) {
       EventCallbackRef e = external_events.front();
       if (e)
@@ -147,7 +147,7 @@ void EventCenter::set_owner()
 int EventCenter::create_file_event(int fd, int mask, EventCallbackRef ctxt)
 {
   int r = 0;
-  Mutex::Locker l(file_lock);
+  std::lock_guard<std::mutex> l(file_lock);
   if (fd >= nevent) {
     int new_size = nevent << 2;
     while (fd > new_size)
@@ -192,7 +192,7 @@ int EventCenter::create_file_event(int fd, int mask, EventCallbackRef ctxt)
 void EventCenter::delete_file_event(int fd, int mask)
 {
   assert(fd >= 0);
-  Mutex::Locker l(file_lock);
+  std::lock_guard<std::mutex> l(file_lock);
   if (fd >= nevent) {
     ldout(cct, 1) << __func__ << " delete event fd=" << fd << " is equal or greater than nevent=" << nevent
                   << "mask=" << mask << dendl;
@@ -329,7 +329,7 @@ int EventCenter::process_events(int timeout_microseconds)
   ldout(cct, 10) << __func__ << " wait second " << tv.tv_sec << " usec " << tv.tv_usec << dendl;
   vector<FiredFileEvent> fired_events;
   numevents = driver->event_wait(fired_events, &tv);
-  file_lock.Lock();
+  file_lock.lock();
   for (int j = 0; j < numevents; j++) {
     int rfired = 0;
     FileEvent *event;
@@ -344,36 +344,36 @@ int EventCenter::process_events(int timeout_microseconds)
     if (event->mask & fired_events[j].mask & EVENT_READABLE) {
       rfired = 1;
       cb = event->read_cb;
-      file_lock.Unlock();
+      file_lock.unlock();
       cb->do_request(fired_events[j].fd);
-      file_lock.Lock();
+      file_lock.lock();
     }
 
     if (event->mask & fired_events[j].mask & EVENT_WRITABLE) {
       if (!rfired || event->read_cb != event->write_cb) {
         cb = event->write_cb;
-        file_lock.Unlock();
+        file_lock.unlock();
         cb->do_request(fired_events[j].fd);
-        file_lock.Lock();
+        file_lock.lock();
       }
     }
 
     ldout(cct, 20) << __func__ << " event_wq process is " << fired_events[j].fd << " mask is " << fired_events[j].mask << dendl;
   }
-  file_lock.Unlock();
+  file_lock.unlock();
 
   if (trigger_time)
     numevents += process_time_events();
 
   if (external_num_events.load()) {
-    external_lock.Lock();
+    external_lock.lock();
     if (external_events.empty()) {
-      external_lock.Unlock();
+      external_lock.unlock();
     } else {
       deque<EventCallbackRef> cur_process;
       cur_process.swap(external_events);
       external_num_events.store(0);
-      external_lock.Unlock();
+      external_lock.unlock();
       while (!cur_process.empty()) {
         EventCallbackRef e = cur_process.front();
         if (e)
@@ -388,10 +388,10 @@ int EventCenter::process_events(int timeout_microseconds)
 
 void EventCenter::dispatch_event_external(EventCallbackRef e)
 {
-  external_lock.Lock();
+  external_lock.lock();
   external_events.push_back(e);
   uint64_t num = ++external_num_events;
-  external_lock.Unlock();
+  external_lock.unlock();
   if (!in_thread())
     wakeup();
 
index 356c74ef8512111393d1af1f23ae3aaa41184018..344f322e18e4f4f325e9af49a02b69cacd60cd1c 100644 (file)
 #include <mutex>
 #include <condition_variable>
 
-#include "include/Context.h"
+#include "include/utime.h"
 #include "include/unordered_map.h"
 #include "common/ceph_time.h"
-#include "common/WorkQueue.h"
+#include "common/dout.h"
 #include "net_handler.h"
 
 #define EVENT_NONE 0
@@ -110,7 +110,7 @@ class EventCenter {
   CephContext *cct;
   int nevent;
   // Used only to external event
-  Mutex external_lock, file_lock;
+  std::mutex external_lock, file_lock;;
   std::atomic_ulong external_num_events;
   deque<EventCallbackRef> external_events;
   vector<FileEvent> file_events;
@@ -134,8 +134,6 @@ class EventCenter {
 
   explicit EventCenter(CephContext *c):
     cct(c), nevent(0),
-    external_lock("AsyncMessenger::external_lock"),
-    file_lock("AsyncMessenger::file_lock"),
     external_num_events(0),
     driver(NULL), time_event_next_id(1),
     notify_receive_fd(-1), notify_send_fd(-1), net(c),