summaryrefslogtreecommitdiffstats
path: root/raul
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2013-02-04 00:54:25 +0000
committerDavid Robillard <d@drobilla.net>2013-02-04 00:54:25 +0000
commit5034a4b8cfcbc57423028031419f0f38a2ffc405 (patch)
tree78a035592d478961c70f797a73b6b09fe5fe486b /raul
parent125de9306bc724d70dd377c5cadf1af98a5db933 (diff)
downloadraul-5034a4b8cfcbc57423028031419f0f38a2ffc405.tar.gz
raul-5034a4b8cfcbc57423028031419f0f38a2ffc405.tar.bz2
raul-5034a4b8cfcbc57423028031419f0f38a2ffc405.zip
Replace Raul::thread with std::thread.
git-svn-id: http://svn.drobilla.net/lad/trunk/raul@5047 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'raul')
-rw-r--r--raul/Thread.hpp120
1 files changed, 0 insertions, 120 deletions
diff --git a/raul/Thread.hpp b/raul/Thread.hpp
deleted file mode 100644
index 11cd0fb..0000000
--- a/raul/Thread.hpp
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- This file is part of Raul.
- Copyright 2007-2012 David 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 3 of the License, or 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 more details.
-
- You should have received a copy of the GNU General Public License
- along with Raul. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef RAUL_THREAD_HPP
-#define RAUL_THREAD_HPP
-
-#include "raul/Noncopyable.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.
- *
- * \ingroup raul
- */
-class Thread : Noncopyable
-{
-public:
- virtual ~Thread() {
- join();
- }
-
- /** Start the thread if it is not already running.
- *
- * This is separate from construction to prevent race conditions during
- * construction of derived classes.
- */
- virtual void start() {
- if (!_thread_exists) {
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_attr_setstacksize(&attr, 1500000);
-
- pthread_create(&_pthread, &attr, _static_run, this);
- _thread_exists = true;
- }
- }
-
- /** Stop the thread and block the caller until the thread exits.
- *
- * This sets _exit_flag to true, derived classes must ensure they actually
- * exit when this occurs.
- */
- virtual void join() {
- if (_thread_exists) {
- _exit_flag = true;
- pthread_join(_pthread, NULL);
- _thread_exists = false;
- }
- }
-
- /** Set the scheduling policy for this thread.
- * @return True on success.
- */
- virtual bool set_scheduling(bool realtime, unsigned priority) {
- if (_thread_exists) {
- sched_param sp;
- sp.sched_priority = priority;
- const int policy = realtime ? SCHED_FIFO : SCHED_OTHER;
- return !pthread_setschedparam(_pthread, policy, &sp);
- } else {
- return false;
- }
- }
-
-protected:
- /** Construct a thread.
- *
- * Note this does not actually start a thread to prevent race conditions
- * during construction. To actually begin execution, call start().
- */
- explicit Thread()
- : _thread_exists(false)
- , _exit_flag(false)
- {}
-
-
- /** Thread function to execute.
- *
- * This is called once on start, and terminated on stop.
- * Implementations likely want to put some infinite loop here.
- *
- * When _exit_flag becomes true (via a call to stop()) the loop
- * should exit.
- */
- virtual void _run() {}
-
-private:
- static void* _static_run(void* thread) {
- Thread* me = static_cast<Thread*>(thread);
- me->_run();
- me->_thread_exists = false;
- return NULL;
- }
-
- pthread_t _pthread;
- bool _thread_exists;
-
-protected:
- bool _exit_flag;
-};
-
-} // namespace Raul
-
-#endif // RAUL_THREAD_HPP