diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/sem_test.cpp | 49 | ||||
-rw-r--r-- | test/thread_test.cpp | 2 |
2 files changed, 50 insertions, 1 deletions
diff --git a/test/sem_test.cpp b/test/sem_test.cpp new file mode 100644 index 0000000..e1f2fb4 --- /dev/null +++ b/test/sem_test.cpp @@ -0,0 +1,49 @@ +#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() { + while (true) { + if (_sem.timed_wait(250)) { + cout << "[Waiter] Received signal" << endl; + break; + } else { + cout << "[Waiter] Timed out" << endl; + } + } + cout << "[Waiter] Exiting" << endl; + } + + Semaphore& _sem; +}; + +int +main() +{ + Thread& this_thread = Thread::get(); + this_thread.set_name("Main"); + + Semaphore sem(0); + Waiter waiter(sem); + waiter.start(); + + sleep(1); + + cout << "[Main] Signalling..." << endl; + sem.post(); + + waiter.join(); + cout << "[Main] Exiting" << endl; + + return 0; +} diff --git a/test/thread_test.cpp b/test/thread_test.cpp index 176e544..84840de 100644 --- a/test/thread_test.cpp +++ b/test/thread_test.cpp @@ -31,7 +31,7 @@ main() Waiter waiter(sem); waiter.start(); - cout << "[Main] Signaling..." << endl; + cout << "[Main] Signalling..." << endl; sem.post(); cout << "[Main] Waiting for waiter..." << endl; |