#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 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__