From 1462e4f70e6bc8e42f6a5b5e959b7e34f2774a73 Mon Sep 17 00:00:00 2001 From: Mattes D Date: Sun, 26 Jun 2016 15:51:12 +0200 Subject: Self tests (#3242) * SelfTests: Added a cEvent stress-test. * cNetwork: Fixed startup event hang. The original code used to hang with a ~ 1:50000 chance, because on Linux the cEvent was destroyed before its "Set()" returned. --- src/OSSupport/NetworkSingleton.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'src/OSSupport/NetworkSingleton.cpp') diff --git a/src/OSSupport/NetworkSingleton.cpp b/src/OSSupport/NetworkSingleton.cpp index d0abafcbd..dcf17bccb 100644 --- a/src/OSSupport/NetworkSingleton.cpp +++ b/src/OSSupport/NetworkSingleton.cpp @@ -91,10 +91,8 @@ void cNetworkSingleton::Initialise(void) // Create the event loop thread: m_HasTerminated = false; - m_StartupEvent.reset(new cEvent); m_EventLoopThread = std::thread(RunEventLoop, this); - m_StartupEvent->Wait(); // Wait for the LibEvent loop to actually start running (otherwise calling Terminate too soon would hang, see #3228) - m_StartupEvent.reset(); // Don't need the cEvent any more, release all its resources + m_StartupEvent.Wait(); // Wait for the LibEvent loop to actually start running (otherwise calling Terminate too soon would hang, see #3228) } @@ -169,8 +167,7 @@ void cNetworkSingleton::SignalizeStartup(evutil_socket_t a_Socket, short a_Event { auto self = reinterpret_cast(a_Self); ASSERT(self != nullptr); - ASSERT(self->m_StartupEvent != nullptr); - self->m_StartupEvent->Set(); + self->m_StartupEvent.Set(); } -- cgit v1.2.3