From ff4c3ff14e76e5b06f1b4c44f03f900e1bd4ac50 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 14 May 2012 05:45:15 +0000 Subject: Clean up Thread interface. git-svn-id: http://svn.drobilla.net/lad/trunk/raul@4411 a436a847-0d15-0410-975c-d299462d15a1 --- raul/Slave.hpp | 2 +- raul/Thread.hpp | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) (limited to 'raul') diff --git a/raul/Slave.hpp b/raul/Slave.hpp index e148cff..593d5e2 100644 --- a/raul/Slave.hpp +++ b/raul/Slave.hpp @@ -32,7 +32,7 @@ namespace Raul { class Slave : public Thread { public: - Slave() : _whip(0) {} + explicit Slave(const std::string& name="") : Thread(name), _whip(0) {} /** Tell the slave to do whatever work it does. Realtime safe. */ inline void whip() { _whip.post(); } diff --git a/raul/Thread.hpp b/raul/Thread.hpp index 9b61048..021bf86 100644 --- a/raul/Thread.hpp +++ b/raul/Thread.hpp @@ -39,27 +39,32 @@ class Thread : Noncopyable public: virtual ~Thread(); - static Thread* create(const std::string& name="") - { return new Thread(name); } - - static Thread* create_for_this_thread(const std::string& name=""); + /** Create a new thread. */ + static Thread* create(const std::string& name="") { + return new Thread(name); + } /** Return the calling thread. * * If the calling thread does not yet have a Thread object associated with - * it, one will be created. + * it yet, one will be created with the given name. */ static Thread& get(const std::string& name=""); + /** Start the thread if it is not already running. */ virtual void start(); + + /** Stop the thread if it is running. */ virtual void stop(); + /** Wait until the thread exits. */ virtual void join(); - void set_scheduling(int policy, unsigned int priority); + /** Set the scheduling policy for this thread. */ + virtual void set_scheduling(bool realtime, unsigned priority); + /** Return the name of this thread. */ const std::string& name() const { return _name; } - void set_name(const std::string& name) { _name = name; } protected: explicit Thread(const std::string& name=""); @@ -75,8 +80,6 @@ protected: */ virtual void _run() {} - bool _exit_flag; - private: static void* _static_run(void* me); @@ -84,6 +87,9 @@ private: std::string _name; bool _thread_exists; bool _own_thread; + +protected: + bool _exit_flag; }; } // namespace Raul -- cgit v1.2.1