FasTC/Core/src/Thread.h

87 lines
2 KiB
C
Raw Normal View History

#ifndef __TEX_COMP_THREAD_H__
#define __TEX_COMP_THREAD_H__
#include "TexCompTypes.h"
////////////////////////////////////////////////////////////////////////////////
//
// Base implementation
//
////////////////////////////////////////////////////////////////////////////////
class TCThreadBaseImpl;
class TCThreadBaseImplFactory;
class TCThreadBase {
protected:
TCThreadBase(const TCThreadBaseImplFactory &);
TCThreadBase(const TCThreadBase &);
TCThreadBase &operator=(const TCThreadBase &);
~TCThreadBase();
TCThreadBaseImpl *m_Impl;
};
// The base class for a thread implementation
class TCCallable {
protected:
TCCallable() { }
public:
virtual ~TCCallable() { }
virtual void operator()() = 0;
};
////////////////////////////////////////////////////////////////////////////////
//
// Thread implementation
//
////////////////////////////////////////////////////////////////////////////////
class TCThread : public TCThreadBase {
public:
TCThread(TCCallable &);
void Join();
static void Yield();
};
////////////////////////////////////////////////////////////////////////////////
//
// Mutex implementation
//
////////////////////////////////////////////////////////////////////////////////
class TCMutex : public TCThreadBase {
friend class TCLockImpl;
public:
TCMutex();
};
////////////////////////////////////////////////////////////////////////////////
//
// Lock implementation
//
////////////////////////////////////////////////////////////////////////////////
class TCLock : public TCThreadBase {
friend class TCConditionVariableImpl;
public:
TCLock(TCMutex &);
};
////////////////////////////////////////////////////////////////////////////////
//
// Condition Variable implementation
//
////////////////////////////////////////////////////////////////////////////////
class TCConditionVariable : public TCThreadBase {
public:
TCConditionVariable();
void Wait(TCLock &);
void NotifyOne();
void NotifyAll();
};
#endif //__TEX_COMP_THREAD_H__