Jthread.cpp if (!continuemutex.IsInitialized()) { if (continuemutex.Init() < 0) return ERR_JTHREAD_CANTINITMUTEX; } if (!continuemutex2.IsInitialized()) { if (continuemutex2.Init() < 0) return ERR_JTHREAD_CANTINITMUTEX; } mutexinit = true; } runningmutex.Lock(); if (running) { runningmutex.Unlock(); return ERR_JTHREAD_ALREADYRUNNING; } runningmutex.Unlock(); continuemutex.Lock(); status = pthread_create(&threadid,NULL,TheThread,this); if (status != 0) { continuemutex.Unlock(); return ERR_JTHREAD_CANTSTARTTHREAD; } /* Wait until 'running' is set */ runningmutex.Lock(); while (!running) { runningmutex.Unlock(); runningmutex.Lock(); } runningmutex.Unlock(); continuemutex.Unlock(); continuemutex2.Lock(); continuemutex2.Unlock(); return 0; }