From 240692ebe941a998cb7764efe9e9df6eac1b53e0 Mon Sep 17 00:00:00 2001 From: Steve Huston Date: Fri, 4 Oct 2002 22:44:11 +0000 Subject: ChangeLogTag:Fri Oct 4 18:39:19 2002 Steve Huston --- tests/Recursive_Condition_Test.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'tests/Recursive_Condition_Test.cpp') diff --git a/tests/Recursive_Condition_Test.cpp b/tests/Recursive_Condition_Test.cpp index f2c1d4ab488..3cd116b7d0f 100644 --- a/tests/Recursive_Condition_Test.cpp +++ b/tests/Recursive_Condition_Test.cpp @@ -22,6 +22,8 @@ #include "test_config.h" #include "ace/Event_Handler.h" +#include "ace/Synch.h" +#include "ace/Thread_Manager.h" #include "ace/Timer_Heap.h" #include "ace/Timer_Queue_Adapters.h" @@ -54,6 +56,19 @@ public: } }; +// These are for the second test - simple wait/signal. +ACE_SYNCH_RECURSIVE_MUTEX mutex_; +ACE_SYNCH_RECURSIVE_CONDITION condition_(mutex_); + +ACE_THR_FUNC_RETURN waiter (void *) { + ACE_ASSERT (mutex_.acquire () == 0); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) waiting for cv signal...\n"))); + condition_.wait(); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) woken up!!!\n"))); + mutex_.release (); + return 0; +} + #endif /* ACE_HAS_THREADS */ int @@ -77,6 +92,23 @@ ACE_TMAIN (int, ACE_TCHAR *[]) ACE_DEBUG ((LM_DEBUG, "[%t] timer id = %d\n", timer_id)); ACE_OS::sleep (10); + timer_queue.deactivate (); + timer_queue.wait (); + + // Now do a simple wait/signal combination across two threads. + if (ACE_Thread_Manager::instance()->spawn (waiter) == -1) + ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("spawn")), 1); + + ACE_OS::sleep (2); + if (mutex_.acquire () == -1) + ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), + ACE_TEXT ("mutex acquire")), + 1); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) signaling condition...\n"))); + if (condition_.signal () == -1) + ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("signal"))); + mutex_.release (); + ACE_Thread_Manager::instance ()->wait (); #else ACE_ERROR ((LM_ERROR, -- cgit v1.2.1