summaryrefslogtreecommitdiff
path: root/examples/APG/ThreadSafety/Atomic_Op.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/APG/ThreadSafety/Atomic_Op.cpp')
-rw-r--r--examples/APG/ThreadSafety/Atomic_Op.cpp138
1 files changed, 0 insertions, 138 deletions
diff --git a/examples/APG/ThreadSafety/Atomic_Op.cpp b/examples/APG/ThreadSafety/Atomic_Op.cpp
deleted file mode 100644
index f09a65d6d90..00000000000
--- a/examples/APG/ThreadSafety/Atomic_Op.cpp
+++ /dev/null
@@ -1,138 +0,0 @@
-// $Id$
-
-#include "ace/Synch.h"
-#include "ace/Task.h"
-#include "ace/Log_Msg.h"
-#include "ace/Atomic_Op.h"
-
-#if defined(RUNNING_ON_UNSAFE_MULTIPROCESSOR)
-// Listing 1 code/ch14
-typedef ACE_Atomic_Op<ACE_Thread_Mutex, unsigned int> SafeUInt;
-// Listing 1
-// Listing 2 code/ch14
-typedef ACE_Atomic_Op<ACE_Thread_Mutex, int> SafeInt;
-// Listing 2
-#else
-typedef ACE_Atomic_Op<ACE_Null_Mutex, unsigned int> SafeUInt;
-typedef ACE_Atomic_Op<ACE_Null_Mutex, int> SafeInt;
-#endif /* RUNNING_ON_UNSAFE_MULTIPROCESSOR) */
-
-static const unsigned int Q_SIZE = 2;
-static const int MAX_PROD = 10;
-
-// Listing 3 code/ch14
-class Producer : public ACE_Task_Base
-{
-public:
- Producer (int *buf, SafeUInt &in, SafeUInt &out)
- : buf_(buf), in_(in), out_(out)
- { }
-
- int svc (void)
- {
- SafeInt itemNo = 0;
- while (1)
- {
- // Busy wait.
- do
- { }
- while (in_.value () - out_.value () == Q_SIZE);
-
- itemNo++;
- buf_[in_.value () % Q_SIZE] = itemNo.value ();
- in_++;
-
- ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Produced %d \n"),
- itemNo.value ()));
-
- if (check_termination (itemNo.value ()))
- break;
- }
-
- return 0;
- }
-
- int check_termination (int item)
- {
- return (item == MAX_PROD);
- }
-
-private:
- int * buf_;
- SafeUInt& in_;
- SafeUInt& out_;
-};
-
-class Consumer : public ACE_Task_Base
-{
-public:
- Consumer (int *buf, SafeUInt &in, SafeUInt& out)
- : buf_(buf), in_(in), out_(out)
- { }
-
- int svc (void)
- {
- while (1)
- {
- int item;
-
- // Busy wait.
- do
- { }
- while (in_.value () - out_.value () == 0);
-
- item = buf_[out_.value () % Q_SIZE];
- out_++;
-
- ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Consumed %d\n"),
- item));
-
- if (check_termination (item))
- break;
- }
-
- return 0;
- }
-
- int check_termination (int item)
- {
- return (item == MAX_PROD);
- }
-
-private:
- int * buf_;
- SafeUInt& in_;
- SafeUInt& out_;
-};
-// Listing 3
-
-// Listing 4 code/ch14
-int ACE_TMAIN (int, ACE_TCHAR *[])
-{
- int shared_buf[Q_SIZE];
- SafeUInt in = 0;
- SafeUInt out = 0;
-
- Producer producer (shared_buf, in, out);
- Consumer consumer (shared_buf, in, out);
-
- producer.activate();
- consumer.activate();
- producer.wait();
- consumer.wait();
-
- return 0;
-}
-// Listing 4
-
-#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
-template class ACE_Atomic_Op<ACE_Null_Mutex, unsigned int>;
-template class ACE_Atomic_Op<ACE_Null_Mutex, int>;
-template class ACE_Atomic_Op_Ex<ACE_Null_Mutex, unsigned int>;
-template class ACE_Atomic_Op_Ex<ACE_Null_Mutex, int>;
-#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
-#pragma instantiate ACE_Atomic_Op<ACE_Null_Mutex, unsigned int>
-#pragma instantiate ACE_Atomic_Op<ACE_Null_Mutex, int>
-#pragma instantiate ACE_Atomic_Op_Ex<ACE_Null_Mutex, unsigned int>
-#pragma instantiate ACE_Atomic_Op_Ex<ACE_Null_Mutex, int>
-#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */