mirror of
https://github.com/yuzu-emu/FasTC.git
synced 2025-01-09 23:45:38 +00:00
80 lines
1.8 KiB
C
80 lines
1.8 KiB
C
|
#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__
|