📄 mutex.cpp
字号:
// Mutex.cpp,v 1.4 2005/04/19 08:30:35 jwillemsen Exp#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/ch14typedef 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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -