|
|
@ -94,16 +94,19 @@ private:
|
|
|
|
class ThreadMutex_OS2 : public ThreadMutex {
|
|
|
|
class ThreadMutex_OS2 : public ThreadMutex {
|
|
|
|
private:
|
|
|
|
private:
|
|
|
|
HMTX mutex;
|
|
|
|
HMTX mutex;
|
|
|
|
|
|
|
|
HEV event;
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
public:
|
|
|
|
ThreadMutex_OS2()
|
|
|
|
ThreadMutex_OS2()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
DosCreateMutexSem(NULL, &mutex, 0, FALSE);
|
|
|
|
DosCreateMutexSem(NULL, &mutex, 0, FALSE);
|
|
|
|
|
|
|
|
DosCreateEventSem(NULL, &event, 0, FALSE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* virtual */ ~ThreadMutex_OS2()
|
|
|
|
/* virtual */ ~ThreadMutex_OS2()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
DosCloseMutexSem(mutex);
|
|
|
|
DosCloseMutexSem(mutex);
|
|
|
|
|
|
|
|
DosCloseEventSem(event);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* virtual */ void BeginCritical()
|
|
|
|
/* virtual */ void BeginCritical()
|
|
|
@ -115,6 +118,18 @@ public:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
DosReleaseMutexSem(mutex);
|
|
|
|
DosReleaseMutexSem(mutex);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* virtual */ void WaitForSignal()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
this->EndCritical();
|
|
|
|
|
|
|
|
DosWaitEventSem(event, SEM_INDEFINITE_WAIT);
|
|
|
|
|
|
|
|
this->BeginCritical();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* virtual */ void SendSignal()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
DosPostEventSem(event);
|
|
|
|
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/* static */ ThreadMutex *ThreadMutex::New()
|
|
|
|
/* static */ ThreadMutex *ThreadMutex::New()
|
|
|
|