diff options
Diffstat (limited to 'libs/rubberband/src/Thread.h')
-rw-r--r-- | libs/rubberband/src/Thread.h | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/libs/rubberband/src/Thread.h b/libs/rubberband/src/Thread.h deleted file mode 100644 index 061469297e..0000000000 --- a/libs/rubberband/src/Thread.h +++ /dev/null @@ -1,142 +0,0 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ - -/* - Rubber Band - An audio time-stretching and pitch-shifting library. - Copyright 2007-2008 Chris Cannam. - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. See the file - COPYING included with this distribution for more information. -*/ - -#ifndef _RUBBERBAND_THREAD_H_ -#define _RUBBERBAND_THREAD_H_ - -#ifdef _WIN32 -#include <windows.h> -#else /* !_WIN32 */ -#include <pthread.h> -#endif /* !_WIN32 */ - -#include <string> - -//#define DEBUG_THREAD 1 -//#define DEBUG_MUTEX 1 -//#define DEBUG_CONDITION 1 - -namespace RubberBand -{ - -class Thread -{ -public: -#ifdef _WIN32 - typedef HANDLE Id; -#else - typedef pthread_t Id; -#endif - - Thread(); - virtual ~Thread(); - - Id id(); - - void start(); - void wait(); - - static bool threadingAvailable(); - -protected: - virtual void run() = 0; - -private: -#ifdef _WIN32 - HANDLE m_id; - bool m_extant; - static DWORD WINAPI staticRun(LPVOID lpParam); -#else - pthread_t m_id; - bool m_extant; - static void *staticRun(void *); -#endif -}; - -class Mutex -{ -public: - Mutex(); - ~Mutex(); - - void lock(); - void unlock(); - bool trylock(); - -private: -#ifdef _WIN32 - HANDLE m_mutex; -#ifndef NO_THREAD_CHECKS - DWORD m_lockedBy; -#endif -#else - pthread_mutex_t m_mutex; -#ifndef NO_THREAD_CHECKS - pthread_t m_lockedBy; - bool m_locked; -#endif -#endif -}; - -class MutexLocker -{ -public: - MutexLocker(Mutex *); - ~MutexLocker(); - -private: - Mutex *m_mutex; -}; - -class Condition -{ -public: - Condition(std::string name); - ~Condition(); - - // To wait on a condition, either simply call wait(), or call - // lock() and then wait() (perhaps testing some state in between). - // To signal a condition, call signal(). - - // Although any thread may signal on a given condition, only one - // thread should ever wait on any given condition object -- - // otherwise there will be a race conditions in the logic that - // avoids the thread code having to track whether the condition's - // mutex is locked or not. If that is your requirement, this - // Condition wrapper is not for you. - void lock(); - void unlock(); - void wait(int us = 0); - - void signal(); - -private: - -#ifdef _WIN32 - HANDLE m_mutex; - HANDLE m_condition; - bool m_locked; -#else - pthread_mutex_t m_mutex; - pthread_cond_t m_condition; - bool m_locked; -#endif -#ifdef DEBUG_CONDITION - std::string m_name; -#endif -}; - -} - -#endif |