diff options
author | David Robillard <d@drobilla.net> | 2007-07-24 19:26:47 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-07-24 19:26:47 +0000 |
commit | 3b4a308ff647def75e647ac8f97e1e48b57672c3 (patch) | |
tree | a33e3a5c78f2ee7f23e151f39fe17ab39b0b81c8 /raul/Thread.h | |
parent | fcb302e6248527b2f1fb655f4d0a64af18f5f059 (diff) | |
download | raul-3b4a308ff647def75e647ac8f97e1e48b57672c3.tar.gz raul-3b4a308ff647def75e647ac8f97e1e48b57672c3.tar.bz2 raul-3b4a308ff647def75e647ac8f97e1e48b57672c3.zip |
Consistently rename all C++ files .cpp/.hpp.
Fix (some) inclusion guard names to not clash with other libs.
git-svn-id: http://svn.drobilla.net/lad/raul@613 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'raul/Thread.h')
-rw-r--r-- | raul/Thread.h | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/raul/Thread.h b/raul/Thread.h deleted file mode 100644 index 8c739f1..0000000 --- a/raul/Thread.h +++ /dev/null @@ -1,107 +0,0 @@ -/* This file is part of Raul. - * Copyright (C) 2007 Dave Robillard <http://drobilla.net> - * - * Raul 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. - * - * Raul is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef RAUL_THREAD_H -#define RAUL_THREAD_H - -#include <string> -#include <iostream> -#include <pthread.h> -#include <boost/utility.hpp> - -namespace Raul { - - -/** Abstract base class for a thread. - * - * Extend this and override the _run method to easily create a thread - * to perform some task. - * - * The current Thread can be accessed using the get() method. - * - * \ingroup raul - */ -class Thread : boost::noncopyable -{ -public: - virtual ~Thread() { - stop(); - } - - static Thread* create(const std::string& name="") - { return new Thread(name); } - - /** Must be called from thread */ - static Thread* create_for_this_thread(const std::string& name="") - { return new Thread(pthread_self(), name); } - - static Thread& get(); - - virtual void start(); - virtual void stop(); - - void set_scheduling(int policy, unsigned int priority); - - const std::string& name() { return _name; } - void set_name(const std::string& name) { _name = name; } - - const unsigned context() { return _context; } - void set_context(unsigned context) { _context = context; } - -protected: - Thread(const std::string& name=""); - Thread(pthread_t thread, const std::string& name=""); - - /** Thread function to execute. - * - * This is called once on start, and terminated on stop. - * Implementations likely want to put some infinite loop here. - */ - virtual void _run() {} - -private: - - inline static void* _static_run(void* me) { - pthread_setspecific(_thread_key, me); - Thread* myself = (Thread*)me; - myself->_run(); - myself->_pthread_exists = false; - return NULL; // and I - } - - /** Allocate thread-specific data key */ - static void thread_key_alloc() - { - pthread_key_create(&_thread_key, NULL); - } - - /* Key for the thread-specific buffer */ - static pthread_key_t _thread_key; - - /* Once-only initialisation of the key */ - static pthread_once_t _thread_key_once; - - unsigned _context; - std::string _name; - bool _pthread_exists; - pthread_t _pthread; -}; - - -} // namespace Raul - -#endif // RAUL_THREAD_H |