diff --git a/daemon/src/sflthread.cpp b/daemon/src/sflthread.cpp
index 30d9dba8a7555256e7230d93d13eff4c604d1e19..669714bf60548f6d8c35e7cec5306aef29ce71e5 100644
--- a/daemon/src/sflthread.cpp
+++ b/daemon/src/sflthread.cpp
@@ -32,8 +32,6 @@
 #include "sflthread.h"
 #include "logger.h"
 
-#define set_false_atomic(x) static_cast<void>(__sync_fetch_and_and(x, false))
-
 void* SFLThread::run_(void* data)
 {
     SFLThread *obj = static_cast<SFLThread*>(data);
@@ -72,7 +70,7 @@ void SFLThread::start()
 
 void SFLThread::stop()
 {
-    set_false_atomic(&running_);
+    running_ = false;
 }
 
 void SFLThread::join()
diff --git a/daemon/src/sflthread.h b/daemon/src/sflthread.h
index 6fdeb2cead292d01f5f19ba8d50fbaf073025318..08c1c09011d3e3ac09f79be1636d9ab72400b173 100644
--- a/daemon/src/sflthread.h
+++ b/daemon/src/sflthread.h
@@ -33,6 +33,7 @@
 #define __SFLTHREAD_H__
 
 #include <pthread.h>
+#include <atomic>
 
 class SFLThread {
 public:
@@ -56,7 +57,7 @@ private:
     void mainloop_();
     pthread_t thread_;
 
-    bool running_;
+    std::atomic<bool> running_;
 };
 
 #endif // __SFLTHREAD_H__