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;
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();
{
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();
#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"
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;