X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Futil%2Fthreads.h;h=d1b6239e852252a482e9334c152235f9fea8bab0;hb=d522ed7e67689a11291e99e49b5768e973de90bb;hp=41ad2b5e569bbc1c02c83f55e6241511a2e4596c;hpb=abbca718e0f6b5a20170561beeacafa0b5852500;p=deb_libcec.git diff --git a/src/lib/util/threads.h b/src/lib/util/threads.h index 41ad2b5..d1b6239 100644 --- a/src/lib/util/threads.h +++ b/src/lib/util/threads.h @@ -39,14 +39,13 @@ class CCondition { public: CCondition(void); - ~CCondition(void); + virtual ~CCondition(void); void Signal(void); bool Wait(CMutex *mutex, int64_t iTimeout); static void Sleep(int iTimeout); private: - bool m_bSignaled; pthread_cond_t m_cond; }; @@ -56,25 +55,43 @@ public: CMutex(void); virtual ~CMutex(void); - bool TryLock(int64_t iTimeout); + bool TryLock(void); bool Lock(void); void Unlock(void); - bool IsLocked(void) const { return m_bLocked; } pthread_mutex_t m_mutex; - CCondition *m_condition; - bool m_bLocked; }; class CLockObject { public: - CLockObject(CMutex *mutex, int64_t iTimeout = -1); + CLockObject(CMutex *mutex); ~CLockObject(void); bool IsLocked(void) const { return m_bLocked; } + void Leave(void); + void Lock(void); private: CMutex *m_mutex; bool m_bLocked; }; + +class CThread +{ +public: + CThread(void); + virtual ~CThread(void); + + virtual bool IsRunning(void) const { return m_bRunning; } + virtual bool CreateThread(void); + virtual void StopThread(bool bWaitForExit = true); + + static void *ThreadHandler(CThread *thread); + virtual void *Process(void) = 0; + +protected: + pthread_t m_thread; + bool m_bRunning; + bool m_bStop; +};