summaryrefslogtreecommitdiff
path: root/examples/APG/Threads/Condition_Variables.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/APG/Threads/Condition_Variables.cpp')
-rw-r--r--examples/APG/Threads/Condition_Variables.cpp124
1 files changed, 0 insertions, 124 deletions
diff --git a/examples/APG/Threads/Condition_Variables.cpp b/examples/APG/Threads/Condition_Variables.cpp
deleted file mode 100644
index 579d655cca6..00000000000
--- a/examples/APG/Threads/Condition_Variables.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-// $Id$
-
-#include "ace/config-lite.h"
-#if defined (ACE_HAS_THREADS)
-
-#include "ace/Task.h"
-#include "ace/Synch.h"
-
-// Listing 1 code/ch12
-class HA_Device_Repository
-{
-public:
- HA_Device_Repository() : owner_(0)
- { }
-
- int is_free (void)
- { return (this->owner_ == 0); }
-
- int is_owner (ACE_Task_Base* tb)
- { return (this->owner_ == tb); }
-
- ACE_Task_Base *get_owner (void)
- { return this->owner_; }
-
- void set_owner (ACE_Task_Base *owner)
- { this->owner_ = owner; }
-
- int update_device (int device_id);
-
-private:
- ACE_Task_Base * owner_;
-};
-// Listing 1
-
-class HA_CommandHandler : public ACE_Task_Base
-{
-public:
- enum {NUM_USES = 10};
-
- HA_CommandHandler (HA_Device_Repository& rep,
- ACE_Condition<ACE_Thread_Mutex> &wait,
- ACE_Thread_Mutex& mutex)
- : rep_(rep), waitCond_(wait), mutex_(mutex)
- { }
-
- virtual int svc (void);
-
-private:
- HA_Device_Repository &rep_;
- ACE_Condition<ACE_Thread_Mutex> &waitCond_;
- ACE_Thread_Mutex &mutex_;
-};
-// Listing 2 code/ch12
-int
-HA_CommandHandler::svc (void)
-{
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%t) Handler Thread running\n")));
-
- for (int i = 0; i < NUM_USES; i++)
- {
- this->mutex_.acquire ();
- while (!this->rep_.is_free ())
- this->waitCond_.wait ();
- this->rep_.set_owner (this);
- this->mutex_.release ();
-
- this->rep_.update_device (i);
-
- ACE_ASSERT (this->rep_.is_owner (this));
- this->rep_.set_owner (0);
-
- this->waitCond_.signal ();
- }
-
- return 0;
-}
-// Listing 2
-int
-HA_Device_Repository::update_device (int device_id)
-{
- ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) Updating device %d\n"),
- device_id));
-
- ACE_OS::sleep (1);
- return 0;
-}
-// Listing 3 code/ch12
-int ACE_TMAIN (int, ACE_TCHAR *[])
-{
- HA_Device_Repository rep;
- ACE_Thread_Mutex rep_mutex;
- ACE_Condition<ACE_Thread_Mutex> wait (rep_mutex);
-
- HA_CommandHandler handler1 (rep, wait, rep_mutex);
- HA_CommandHandler handler2 (rep, wait, rep_mutex);
-
- handler1.activate ();
- handler2.activate ();
-
- handler1.wait ();
- handler2.wait ();
-
- return 0;
-}
-// Listing 3
-
-#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
-template class ACE_Condition<ACE_Thread_Mutex>;
-#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
-#pragma instantiate ACE_Condition<ACE_Thread_Mutex>
-#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
-
-#else
-#include "ace/OS_main.h"
-#include "ace/OS_NS_stdio.h"
-
-int ACE_TMAIN (int, ACE_TCHAR *[])
-{
- ACE_OS::puts (ACE_TEXT ("This example requires threads."));
- return 0;
-}
-
-#endif /* ACE_HAS_THREADS */