FasTC/Core/src/Thread.h

80 lines
1.8 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;
};
////////////////////////////////////////////////////////////////////////////////
//
// Thread implementation
//
////////////////////////////////////////////////////////////////////////////////
class TCThread : public TCThreadBase {
public:
template<typename C>
TCThread(C &);
~TCThread();
void Join();
};
////////////////////////////////////////////////////////////////////////////////
//
// 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__