diff options
author | David Robillard <d@drobilla.net> | 2011-01-09 19:57:24 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-01-09 19:57:24 +0000 |
commit | 0679f2c8044579e96334d782d86fd6b5a79c3185 (patch) | |
tree | c47671f6de977430838a35189a16b1816c6ffa98 /test | |
parent | 7f665dbc3a45522216b34cf8f3cebf887220c724 (diff) | |
download | raul-0679f2c8044579e96334d782d86fd6b5a79c3185.tar.gz raul-0679f2c8044579e96334d782d86fd6b5a79c3185.tar.bz2 raul-0679f2c8044579e96334d782d86fd6b5a79c3185.zip |
Non-trivial thread/semaphore test.
git-svn-id: http://svn.drobilla.net/lad/trunk/raul@2803 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'test')
-rw-r--r-- | test/thread_test.cpp | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/test/thread_test.cpp b/test/thread_test.cpp index fd7a411..63ec347 100644 --- a/test/thread_test.cpp +++ b/test/thread_test.cpp @@ -1,19 +1,43 @@ #include <iostream> #include "raul/Thread.hpp" +#include "raul/Semaphore.hpp" using namespace std; using namespace Raul; +class Waiter : public Raul::Thread { +public: + Waiter(Semaphore& sem) : _sem(sem) { + Thread::set_name("Waiter"); + } + +private: + void _run() { + cout << "[Waiter] Waiting for signal..." << endl; + _sem.wait(); + cout << "[Waiter] Received signal, exiting" << endl; + } + + Semaphore& _sem; +}; + int main() { Thread& this_thread = Thread::get(); this_thread.set_name("Main"); - cout << "Thread name should be Main" << endl; + Semaphore sem(0); + Waiter waiter(sem); + waiter.start(); + + cout << "[Main] Signaling..." << endl; + sem.post(); - cout << "Thread name: " << Thread::get().name() << endl; + cout << "[Main] Waiting for waiter..." << endl; + waiter.join(); + + cout << "[Main] Exiting" << endl; return 0; } - |