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.
This commit is contained in:
@@ -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<cNetworkSingleton *>(a_Self);
|
||||
ASSERT(self != nullptr);
|
||||
ASSERT(self->m_StartupEvent != nullptr);
|
||||
self->m_StartupEvent->Set();
|
||||
self->m_StartupEvent.Set();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ protected:
|
||||
std::thread m_EventLoopThread;
|
||||
|
||||
/** Event that is signalled once the startup is finished and the LibEvent loop is running. */
|
||||
UniquePtr<cEvent> m_StartupEvent;
|
||||
cEvent m_StartupEvent;
|
||||
|
||||
|
||||
/** Converts LibEvent-generated log events into log messages in MCS log. */
|
||||
|
||||
Reference in New Issue
Block a user