diff options
Diffstat (limited to 'examples/APG/ThreadSafety/Mutex.cpp')
-rw-r--r-- | examples/APG/ThreadSafety/Mutex.cpp | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/examples/APG/ThreadSafety/Mutex.cpp b/examples/APG/ThreadSafety/Mutex.cpp deleted file mode 100644 index aa21665222c..00000000000 --- a/examples/APG/ThreadSafety/Mutex.cpp +++ /dev/null @@ -1,73 +0,0 @@ -// $Id$ - -#include "ace/config-lite.h" -#if defined (ACE_HAS_THREADS) - -#include "ace/Synch.h" - -class LogMessage -{ -public: - enum { CRITICAL, NORMAL}; - - virtual ~LogMessage () - { - } - - virtual int priority (void) - { - return NORMAL; - } -}; - -class CriticalLogMessage : public LogMessage -{ - virtual int priority (void) - { - return LogMessage::CRITICAL; - } -}; - -// Listing 1 code/ch14 -typedef ACE_Thread_Mutex MUTEX; -class Logger -{ -public: - void log (LogMessage *msg) - { - ACE_GUARD (MUTEX, mon, mutex_); - if (msg->priority () == LogMessage::CRITICAL) - logCritical (msg); - } - - void logCritical (LogMessage *) - { - // Acquires the same mutex as log()! - ACE_GUARD(MUTEX, mon, mutex_); - } - -private: - MUTEX mutex_; -}; - -static Logger logger; - -int ACE_TMAIN (int, ACE_TCHAR *[]) -{ - CriticalLogMessage cm; - logger.log(&cm); // Will cause deadlock. - return 0; -} -// Listing 1 - -#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 */ |