]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Thread safety stuff, waiting for pointer to become 'safe' before changing it (e.g...
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Fri, 22 Feb 2008 18:42:21 +0000 (18:42 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Fri, 22 Feb 2008 18:42:21 +0000 (18:42 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9007 e03df62e-2008-0410-955e-edbf42e46eb7

src/threadengines/threadengine_pthread.cpp

index d6b0f3bd749be510f97458e47f64cafdd078acd9..6a48bd02572637fee14e4574fd68d9dcb19dae1c 100644 (file)
@@ -44,6 +44,9 @@ void PThreadEngine::Create(Thread* thread_to_init)
        NewThread->Extend("pthread", MyPThread);
 
        Mutex(false);
+
+       while (NewThread)
+               usleep(1000);
 }
 
 PThreadEngine::~PThreadEngine()
@@ -52,7 +55,11 @@ PThreadEngine::~PThreadEngine()
 
 void PThreadEngine::Run()
 {
-       NewThread->Run();
+       Mutex(true);
+       Thread* nt = NewThread;
+       NewThread = NULL;
+       Mutex(false);
+       nt->Run();
 }
 
 bool PThreadEngine::Mutex(bool enable)