diff options
author | Erik Sohns <eriksohns@fastmail.net> | 2015-12-02 02:01:02 +0100 |
---|---|---|
committer | Erik Sohns <eriksohns@fastmail.net> | 2015-12-02 02:01:02 +0100 |
commit | aeb68c0179483af8fb44fedf88c94549aaff3210 (patch) | |
tree | 2c74934889c2b3b51b71df64602bd157704b5309 | |
parent | 502c6fce4c245da42c885a1e85c5821de282a2d4 (diff) | |
download | ATCD-aeb68c0179483af8fb44fedf88c94549aaff3210.tar.gz |
fixed an issue with (exported) template specializations (Win32)
-rw-r--r-- | ACE/ace/Condition_Recursive_Thread_Mutex.cpp | 26 | ||||
-rw-r--r-- | ACE/ace/Condition_Recursive_Thread_Mutex.h | 15 | ||||
-rw-r--r-- | ACE/ace/Condition_Recursive_Thread_Mutex.inl | 16 | ||||
-rw-r--r-- | ACE/ace/Future.h | 2 | ||||
-rw-r--r-- | ACE/ace/Timer_Queue_Adapters.h | 2 | ||||
-rw-r--r-- | ACE/examples/APG/ThreadPools/Futures.cpp | 3 | ||||
-rw-r--r-- | ACE/examples/Timer_Queue/Thread_Timer_Queue_Custom_Handler_Test.h | 1 | ||||
-rw-r--r-- | ACE/examples/Timer_Queue/Thread_Timer_Queue_Test.cpp | 3 | ||||
-rw-r--r-- | ACE/tests/Bug_2772_Regression_Test.cpp | 3 | ||||
-rw-r--r-- | ACE/tests/Recursive_Condition_Bug_Test.cpp | 3 |
10 files changed, 53 insertions, 21 deletions
diff --git a/ACE/ace/Condition_Recursive_Thread_Mutex.cpp b/ACE/ace/Condition_Recursive_Thread_Mutex.cpp index 2f68f8c8b36..4ffe00d1947 100644 --- a/ACE/ace/Condition_Recursive_Thread_Mutex.cpp +++ b/ACE/ace/Condition_Recursive_Thread_Mutex.cpp @@ -12,15 +12,15 @@ #if defined (ACE_HAS_THREADS) +#if !defined (__ACE_INLINE__) +#include "ace/Condition_Recursive_Thread_Mutex.inl" +#endif /* __ACE_INLINE__ */ + #include "ace/Log_Category.h" ACE_BEGIN_VERSIONED_NAMESPACE_DECL -int -ACE_Condition<ACE_Recursive_Thread_Mutex>::remove (void) -{ - return ACE_OS::cond_destroy (&this->cond_); -} +ACE_ALLOC_HOOK_DEFINE (ACE_Condition<ACE_Recursive_Thread_Mutex>) void ACE_Condition<ACE_Recursive_Thread_Mutex>::dump (void) const @@ -37,11 +37,6 @@ ACE_Condition<ACE_Recursive_Thread_Mutex>::dump (void) const #endif /* ACE_HAS_DUMP */ } -ACE_Condition<ACE_Recursive_Thread_Mutex>::~ACE_Condition (void) -{ - this->remove (); -} - ACE_Condition<ACE_Recursive_Thread_Mutex>::ACE_Condition (ACE_Recursive_Thread_Mutex &m) : mutex_ (m) { @@ -60,6 +55,11 @@ ACE_Condition<ACE_Recursive_Thread_Mutex>::ACE_Condition (ACE_Recursive_Thread_M ACE_TEXT ("ACE_Condition<ACE_Recursive_Thread_Mutex>::ACE_Condition<ACE_Recursive_Thread_Mutex>"))); } +ACE_Condition<ACE_Recursive_Thread_Mutex>::~ACE_Condition (void) +{ + this->remove (); +} + int ACE_Condition<ACE_Recursive_Thread_Mutex>::wait (const ACE_Time_Value *abstime) { @@ -120,12 +120,6 @@ ACE_Condition<ACE_Recursive_Thread_Mutex>::broadcast (void) return ACE_OS::cond_broadcast (&this->cond_); } -ACE_Recursive_Thread_Mutex & -ACE_Condition<ACE_Recursive_Thread_Mutex>::mutex (void) -{ - return this->mutex_; -} - ACE_END_VERSIONED_NAMESPACE_DECL #endif /* ACE_HAS_THREADS */ diff --git a/ACE/ace/Condition_Recursive_Thread_Mutex.h b/ACE/ace/Condition_Recursive_Thread_Mutex.h index a7ce9944cc5..8061f3b3d63 100644 --- a/ACE/ace/Condition_Recursive_Thread_Mutex.h +++ b/ACE/ace/Condition_Recursive_Thread_Mutex.h @@ -23,12 +23,17 @@ #if !defined (ACE_HAS_THREADS) # include "ace/Null_Condition.h" #else /* ACE_HAS_THREADS */ +// ACE platform supports some form of threading. + #include "ace/Recursive_Thread_Mutex.h" #include "ace/Condition_Attributes.h" #include "ace/Condition_T.h" ACE_BEGIN_VERSIONED_NAMESPACE_DECL +class ACE_Time_Value; + +#if defined (ACE_BUILD_DLL) /** * @brief ACE_Condition template specialization written using * @a ACE_Recursive_Thread_Mutex. This allows threads to block until @@ -86,6 +91,9 @@ public: /// Dump the state of an object. void dump (void) const; + /// Declare the dynamic allocation hooks. + ACE_ALLOC_HOOK_DECLARE; + private: // = Prevent assignment and copying. @@ -101,11 +109,18 @@ private: ACE_Recursive_Thread_Mutex &mutex_; }; +#else +extern template ACE_Export class ACE_Condition<ACE_Recursive_Thread_Mutex>; +#endif typedef ACE_Condition<ACE_Recursive_Thread_Mutex> ACE_Condition_Recursive_Thread_Mutex; ACE_END_VERSIONED_NAMESPACE_DECL +#if defined (__ACE_INLINE__) +#include "ace/Condition_Recursive_Thread_Mutex.inl" +#endif /* __ACE_INLINE__ */ + #endif /* !ACE_HAS_THREADS */ #include /**/ "ace/post.h" diff --git a/ACE/ace/Condition_Recursive_Thread_Mutex.inl b/ACE/ace/Condition_Recursive_Thread_Mutex.inl new file mode 100644 index 00000000000..44e4e09c3a7 --- /dev/null +++ b/ACE/ace/Condition_Recursive_Thread_Mutex.inl @@ -0,0 +1,16 @@ +// -*- C++ -*- +ACE_BEGIN_VERSIONED_NAMESPACE_DECL + +ACE_INLINE int +ACE_Condition<ACE_Recursive_Thread_Mutex>::remove (void) +{ + return ACE_OS::cond_destroy (&this->cond_); +} + +ACE_INLINE ACE_Recursive_Thread_Mutex & +ACE_Condition<ACE_Recursive_Thread_Mutex>::mutex (void) +{ + return this->mutex_; +} + +ACE_END_VERSIONED_NAMESPACE_DECL diff --git a/ACE/ace/Future.h b/ACE/ace/Future.h index c83fae41a47..1ed39ab50fe 100644 --- a/ACE/ace/Future.h +++ b/ACE/ace/Future.h @@ -26,8 +26,6 @@ #if defined (ACE_HAS_THREADS) #include "ace/Synch_Traits.h" -#include "ace/Recursive_Thread_Mutex.h" -#include "ace/Condition_Recursive_Thread_Mutex.h" ACE_BEGIN_VERSIONED_NAMESPACE_DECL diff --git a/ACE/ace/Timer_Queue_Adapters.h b/ACE/ace/Timer_Queue_Adapters.h index a92a260cd2f..4704de6d4e9 100644 --- a/ACE/ace/Timer_Queue_Adapters.h +++ b/ACE/ace/Timer_Queue_Adapters.h @@ -21,7 +21,7 @@ #include "ace/Signal.h" #include "ace/Sig_Handler.h" -#include "ace/Condition_Recursive_Thread_Mutex.h" +#include "ace/Synch_Traits.h" #if defined (ACE_HAS_DEFERRED_TIMER_COMMANDS) # include "ace/Unbounded_Queue.h" diff --git a/ACE/examples/APG/ThreadPools/Futures.cpp b/ACE/examples/APG/ThreadPools/Futures.cpp index c207c734828..1ba64792262 100644 --- a/ACE/examples/APG/ThreadPools/Futures.cpp +++ b/ACE/examples/APG/ThreadPools/Futures.cpp @@ -12,6 +12,9 @@ #include "ace/Activation_Queue.h" #include "ace/Condition_T.h" +// *NOTE*: explicit template instantiation required here... +template class ACE_Condition<ACE_Recursive_Thread_Mutex>; + #define OUTSTANDING_REQUESTS 20 // Listing 2 code/ch16 diff --git a/ACE/examples/Timer_Queue/Thread_Timer_Queue_Custom_Handler_Test.h b/ACE/examples/Timer_Queue/Thread_Timer_Queue_Custom_Handler_Test.h index 5ccb0e01bff..a412ac358cf 100644 --- a/ACE/examples/Timer_Queue/Thread_Timer_Queue_Custom_Handler_Test.h +++ b/ACE/examples/Timer_Queue/Thread_Timer_Queue_Custom_Handler_Test.h @@ -26,7 +26,6 @@ #include "ace/Timer_Heap_T.h" #include "ace/Timer_Queue_Adapters.h" #include "ace/svc_export.h" -#include "ace/Condition_Recursive_Thread_Mutex.h" #include "Driver.h" #include "Custom_Handler.h" diff --git a/ACE/examples/Timer_Queue/Thread_Timer_Queue_Test.cpp b/ACE/examples/Timer_Queue/Thread_Timer_Queue_Test.cpp index 03471912ad9..d46c084d690 100644 --- a/ACE/examples/Timer_Queue/Thread_Timer_Queue_Test.cpp +++ b/ACE/examples/Timer_Queue/Thread_Timer_Queue_Test.cpp @@ -22,7 +22,8 @@ #include "ace/Condition_T.h" #include "ace/Thread_Mutex.h" - +// *NOTE*: explicit template instantiation required here... +template class ACE_Condition<ACE_Recursive_Thread_Mutex>; // Administrivia methods... Handler::Handler(const ACE_Time_Value &expiration_time) diff --git a/ACE/tests/Bug_2772_Regression_Test.cpp b/ACE/tests/Bug_2772_Regression_Test.cpp index 14c948de6d7..f2a98427128 100644 --- a/ACE/tests/Bug_2772_Regression_Test.cpp +++ b/ACE/tests/Bug_2772_Regression_Test.cpp @@ -16,6 +16,9 @@ #include "ace/Condition_Recursive_Thread_Mutex.h" #include "ace/Thread.h" +// *NOTE*: explicit template instantiation required here... +template class ACE_Condition<ACE_Recursive_Thread_Mutex>; + class ThreadTest { public: diff --git a/ACE/tests/Recursive_Condition_Bug_Test.cpp b/ACE/tests/Recursive_Condition_Bug_Test.cpp index 365c80209ed..1513b583c5e 100644 --- a/ACE/tests/Recursive_Condition_Bug_Test.cpp +++ b/ACE/tests/Recursive_Condition_Bug_Test.cpp @@ -23,6 +23,9 @@ #include "ace/Timer_Queue_Adapters.h" #include "ace/Condition_Recursive_Thread_Mutex.h" +// *NOTE*: explicit template instantiation required here... +template class ACE_Condition<ACE_Recursive_Thread_Mutex>; + #if defined (ACE_HAS_THREADS) // Number of iterations for the performance tests. |