Fix win32 jthread implementation

This commit is contained in:
sapier 2013-12-06 17:49:10 +01:00
parent 22dbbf0a6f
commit 35f88ac67c
2 changed files with 12 additions and 5 deletions

2
src/jthread/win32/jsemaphore.cpp Normal file → Executable file
View File

@ -27,7 +27,7 @@ JSemaphore::JSemaphore() {
} }
JSemaphore::~JSemaphore() { JSemaphore::~JSemaphore() {
CloseHandle(&m_hSemaphore); CloseHandle(m_hSemaphore);
} }
JSemaphore::JSemaphore(int initval) { JSemaphore::JSemaphore(int initval) {

15
src/jthread/win32/jthread.cpp Normal file → Executable file
View File

@ -46,14 +46,21 @@ JThread::~JThread()
void JThread::Stop() { void JThread::Stop() {
runningmutex.Lock(); runningmutex.Lock();
requeststop = false; requeststop = true;
runningmutex.Unlock(); runningmutex.Unlock();
} }
void JThread::Wait() { void JThread::Wait() {
int WaitForSingleObject_retval = WaitForSingleObject(threadhandle, INFINITE); runningmutex.Lock();
assert(WaitForSingleObject_retval == 0); if (running)
UNUSED(WaitForSingleObject_retval); {
runningmutex.Unlock();
WaitForSingleObject(threadhandle, INFINITE);
}
else
{
runningmutex.Unlock();
}
} }
int JThread::Start() int JThread::Start()