X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fplatform%2Fthreads.h;h=a258081ccef8bbdf6a5bc8f33826fbaf26ae6c84;hb=e046c7bff238e90b4080f0604c00a45340b0b68c;hp=8b0729db4cf045dccbf3f1bf6777b5d33f6e0df2;hpb=48a229b119ab50aab51bfaefe8b5930204ea2dcf;p=deb_libcec.git diff --git a/src/lib/platform/threads.h b/src/lib/platform/threads.h index 8b0729d..a258081 100644 --- a/src/lib/platform/threads.h +++ b/src/lib/platform/threads.h @@ -46,8 +46,8 @@ namespace CEC void Broadcast(void); void Signal(void); - bool Wait(CMutex *mutex, int64_t iTimeout); - static void Sleep(int64_t iTimeout); + bool Wait(CMutex *mutex, uint32_t iTimeout = 0); + static void Sleep(uint32_t iTimeout); private: pthread_cond_t m_cond; @@ -56,7 +56,7 @@ namespace CEC class CMutex { public: - CMutex(void); + CMutex(bool bRecursive = true); virtual ~CMutex(void); bool TryLock(void); @@ -64,12 +64,15 @@ namespace CEC void Unlock(void); pthread_mutex_t m_mutex; + + private: + static pthread_mutexattr_t *GetMutexAttribute(); }; class CLockObject { public: - CLockObject(CMutex *mutex); + CLockObject(CMutex *mutex, bool bTryLock = false); ~CLockObject(void); bool IsLocked(void) const { return m_bLocked; } @@ -88,18 +91,21 @@ namespace CEC virtual ~CThread(void); virtual bool IsRunning(void) const { return m_bRunning; } - virtual bool CreateThread(void); + virtual bool CreateThread(bool bWait = true); virtual bool StopThread(bool bWaitForExit = true); - virtual bool Sleep(uint64_t iTimeout); + virtual bool IsStopped(void) const { return m_bStop; }; + virtual bool Sleep(uint32_t iTimeout); static void *ThreadHandler(CThread *thread); virtual void *Process(void) = 0; protected: + CCondition m_threadCondition; + + private: pthread_t m_thread; CMutex m_threadMutex; - CCondition m_threadCondition; - bool m_bRunning; bool m_bStop; + bool m_bRunning; }; };