summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-01-09 19:57:24 +0000
committerDavid Robillard <d@drobilla.net>2011-01-09 19:57:24 +0000
commit0679f2c8044579e96334d782d86fd6b5a79c3185 (patch)
treec47671f6de977430838a35189a16b1816c6ffa98 /test
parent7f665dbc3a45522216b34cf8f3cebf887220c724 (diff)
downloadraul-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.cpp30
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;
}
-