untested pthreads event implementation

This commit is contained in:
Glenn Maynard
2004-11-07 22:56:03 +00:00
parent 4de15ff3a7
commit 0330fa9e87
2 changed files with 51 additions and 1 deletions
@@ -204,6 +204,39 @@ MutexImpl *MakeMutex( RageMutex *pParent )
return new MutexImpl_Pthreads( pParent );
}
EventImpl_Pthreads::EventImpl_Pthreads( MutexImpl_Pthreads *pParent )
{
m_pParent = pParent;
pthread_cond_init( &m_Cond, NULL );
}
EventImpl_Pthreads::~EventImpl_Pthreads()
{
pthread_cond_destroy( &m_Cond );
}
void EventImpl_Pthreads::Wait()
{
pthread_cond_wait( &m_Cond, &m_pParent->mutex );
}
void EventImpl_Pthreads::Signal()
{
pthread_cond_signal( &m_Cond );
}
void EventImpl_Pthreads::Broadcast()
{
pthread_cond_broadcast( &m_Cond );
}
EventImpl *MakeEvent( MutexImpl *pMutex )
{
MutexImpl_Pthreads *pPthreadsMutex = (MutexImpl_Pthreads *) pMutex;
return new EventImpl_Pthreads( pPthreadsMutex );
}
#if 0
SemaImpl_Pthreads::SemaImpl_Pthreads( int iInitialValue )
{
+18 -1
View File
@@ -32,6 +32,8 @@ public:
class MutexImpl_Pthreads: public MutexImpl
{
friend class EventImpl_Pthreads;
public:
MutexImpl_Pthreads( RageMutex *parent );
~MutexImpl_Pthreads();
@@ -40,10 +42,25 @@ public:
bool TryLock();
void Unlock();
private:
protected:
pthread_mutex_t mutex;
};
class EventImpl_Pthreads: public EventImpl
{
public:
EventImpl_Pthreads( MutexImpl_Pthreads *pParent );
~EventImpl_Pthreads();
void Wait();
void Signal();
void Broadcast();
private:
MutexImpl_Pthreads *m_pParent;
pthread_cond_t m_Cond;
};
#if 0
class SemaImpl_Pthreads: public SemaImpl
{