00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef ACE_SYNCH_TRAITS_H
00016 #define ACE_SYNCH_TRAITS_H
00017 #include "ace/pre.h"
00018
00019 #include "ace/config-all.h"
00020 #include "ace/Lock.h"
00021
00022 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00023 # pragma once
00024 #endif
00025
00026 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00027
00028
00029 class ACE_Null_Mutex;
00030 class ACE_Null_Condition;
00031 class ACE_Null_Semaphore;
00032 class ACE_Null_Mutex;
00033 class ACE_Thread_Mutex;
00034 class ACE_Process_Mutex;
00035 class ACE_Recursive_Thread_Mutex;
00036 class ACE_RW_Thread_Mutex;
00037 class ACE_Condition_Thread_Mutex;
00038 class ACE_Condition_Recursive_Thread_Mutex;
00039 class ACE_Thread_Semaphore;
00040
00041 #if defined (ACE_HAS_TEMPLATE_TYPEDEFS)
00042
00043
00044
00045
00046
00047
00048
00049
00050 class ACE_Export ACE_NULL_SYNCH
00051 {
00052 public:
00053 typedef ACE_Null_Mutex MUTEX;
00054 typedef ACE_Null_Mutex NULL_MUTEX;
00055 typedef ACE_Null_Mutex PROCESS_MUTEX;
00056 typedef ACE_Null_Mutex RECURSIVE_MUTEX;
00057 typedef ACE_Null_Mutex RW_MUTEX;
00058 typedef ACE_Null_Condition CONDITION;
00059 typedef ACE_Null_Condition RECURSIVE_CONDITION;
00060 typedef ACE_Null_Semaphore SEMAPHORE;
00061 typedef ACE_Null_Mutex NULL_SEMAPHORE;
00062 };
00063
00064 #if defined (ACE_HAS_THREADS)
00065
00066 class ACE_Process_Mutex;
00067 class ACE_Condition_Recursive_Thread_Mutex;
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079 class ACE_Export ACE_MT_SYNCH
00080 {
00081 public:
00082 typedef ACE_Thread_Mutex MUTEX;
00083 typedef ACE_Null_Mutex NULL_MUTEX;
00084 typedef ACE_Process_Mutex PROCESS_MUTEX;
00085 typedef ACE_Recursive_Thread_Mutex RECURSIVE_MUTEX;
00086 typedef ACE_RW_Thread_Mutex RW_MUTEX;
00087 typedef ACE_Condition_Thread_Mutex CONDITION;
00088 typedef ACE_Condition_Recursive_Thread_Mutex RECURSIVE_CONDITION;
00089 typedef ACE_Thread_Semaphore SEMAPHORE;
00090 typedef ACE_Null_Semaphore NULL_SEMAPHORE;
00091 };
00092
00093 #endif
00094
00095 #define ACE_SYNCH_MUTEX ACE_SYNCH::MUTEX
00096 #define ACE_SYNCH_NULL_MUTEX ACE_SYNCH::NULL_MUTEX
00097 #define ACE_SYNCH_RECURSIVE_MUTEX ACE_SYNCH::RECURSIVE_MUTEX
00098 #define ACE_SYNCH_RW_MUTEX ACE_SYNCH::RW_MUTEX
00099 #define ACE_SYNCH_CONDITION ACE_SYNCH::CONDITION
00100 #define ACE_SYNCH_RECURSIVE_CONDITION ACE_SYNCH::RECURSIVE_CONDITION
00101 #define ACE_SYNCH_NULL_SEMAPHORE ACE_SYNCH::NULL_SEMAPHORE
00102 #define ACE_SYNCH_SEMAPHORE ACE_SYNCH::SEMAPHORE
00103
00104 #else
00105
00106 #if defined (ACE_HAS_OPTIMIZED_MESSAGE_QUEUE)
00107 #define ACE_NULL_SYNCH ACE_Null_Mutex, ACE_Null_Condition, ACE_Null_Mutex
00108 #define ACE_MT_SYNCH ACE_Thread_Mutex, ACE_Condition_Thread_Mutex, ACE_Thread_Semaphore
00109 #else
00110 #define ACE_NULL_SYNCH ACE_Null_Mutex, ACE_Null_Condition
00111 #define ACE_MT_SYNCH ACE_Thread_Mutex, ACE_Condition_Thread_Mutex
00112 #endif
00113
00114 #if defined (ACE_HAS_THREADS)
00115
00116 #define ACE_SYNCH_MUTEX ACE_Thread_Mutex
00117 #define ACE_SYNCH_NULL_MUTEX ACE_Null_Mutex
00118 #define ACE_SYNCH_RECURSIVE_MUTEX ACE_Recursive_Thread_Mutex
00119 #define ACE_SYNCH_RW_MUTEX ACE_RW_Thread_Mutex
00120 #define ACE_SYNCH_CONDITION ACE_Condition_Thread_Mutex
00121 #define ACE_SYNCH_RECURSIVE_CONDITION ACE_Condition_Recursive_Thread_Mutex
00122 #define ACE_SYNCH_SEMAPHORE ACE_Thread_Semaphore
00123 #define ACE_SYNCH_NULL_SEMAPHORE ACE_Null_Semaphore
00124
00125 #else
00126
00127 #define ACE_SYNCH_MUTEX ACE_Null_Mutex
00128 #define ACE_SYNCH_NULL_MUTEX ACE_Null_Mutex
00129 #define ACE_SYNCH_RECURSIVE_MUTEX ACE_Null_Mutex
00130 #define ACE_SYNCH_RW_MUTEX ACE_Null_Mutex
00131 #define ACE_SYNCH_CONDITION ACE_Null_Condition
00132 #define ACE_SYNCH_RECURSIVE_CONDITION ACE_Null_Condition
00133 #define ACE_SYNCH_SEMAPHORE ACE_Null_Semaphore
00134 #define ACE_SYNCH_NULL_SEMAPHORE ACE_Null_Mutex
00135
00136 #endif
00137 #endif
00138
00139
00140 #define ACE_SYNCH_PROCESS_SEMAPHORE ACE_Process_Semaphore
00141 #define ACE_SYNCH_PROCESS_MUTEX ACE_Process_Mutex
00142
00143 #if defined (ACE_HAS_THREADS)
00144 #define ACE_SYNCH ACE_MT_SYNCH
00145 #else
00146 #define ACE_SYNCH ACE_NULL_SYNCH
00147 #endif
00148
00149 ACE_END_VERSIONED_NAMESPACE_DECL
00150
00151 #include "ace/post.h"
00152 #endif