diff --git a/autowiring/AutoNetServer.h b/autowiring/AutoNetServer.h index 04bbc0053..b059d318b 100644 --- a/autowiring/AutoNetServer.h +++ b/autowiring/AutoNetServer.h @@ -22,6 +22,8 @@ class AutoNetTransportHandler { /// class AutoNetTransport { public: + virtual ~AutoNetTransport(void){} + /// /// Causes the transport to begin servicing user requests /// diff --git a/src/autowiring/BasicThread.cpp b/src/autowiring/BasicThread.cpp index d7b859aed..561be85e2 100644 --- a/src/autowiring/BasicThread.cpp +++ b/src/autowiring/BasicThread.cpp @@ -71,7 +71,11 @@ void BasicThread::DoRunLoopCleanup(std::shared_ptr&& ctxt, std::sha m_running = false; // Need to ensure that "stop" and "running" are actually updated in memory before we mark "complete" +#if autowiring_USE_LIBCXX std::atomic_thread_fence(std::memory_order_release); +#else + (std::lock_guard)state->m_lock; +#endif m_completed = true; // Tell our CoreRunnable parent that we're done to ensure that our reference count will be cleared.