summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Sohns <eriksohns@fastmail.net>2015-12-03 03:40:08 +0100
committerErik Sohns <eriksohns@fastmail.net>2015-12-03 14:59:35 +0100
commitb1d83eae3232e4d58125a1388d17f98e3844d08d (patch)
tree3c000f537c045c371f60b43b419d385136965ce1
parent7acfc9e6f746a4b57f5e62847218a1552ea6be52 (diff)
downloadATCD-b1d83eae3232e4d58125a1388d17f98e3844d08d.tar.gz
fixed an issue with (exported) template specializations (Win32) (part2)
-rw-r--r--ACE/ace/Condition_Recursive_Thread_Mutex.cpp12
-rw-r--r--ACE/ace/Condition_Recursive_Thread_Mutex.h7
-rw-r--r--ACE/ace/Condition_Recursive_Thread_Mutex.inl12
3 files changed, 17 insertions, 14 deletions
diff --git a/ACE/ace/Condition_Recursive_Thread_Mutex.cpp b/ACE/ace/Condition_Recursive_Thread_Mutex.cpp
index 4ffe00d1947..763f08154de 100644
--- a/ACE/ace/Condition_Recursive_Thread_Mutex.cpp
+++ b/ACE/ace/Condition_Recursive_Thread_Mutex.cpp
@@ -108,18 +108,6 @@ ACE_Condition<ACE_Recursive_Thread_Mutex>::wait (ACE_Recursive_Thread_Mutex &mut
return result;
}
-int
-ACE_Condition<ACE_Recursive_Thread_Mutex>::signal (void)
-{
- return ACE_OS::cond_signal (&this->cond_);
-}
-
-int
-ACE_Condition<ACE_Recursive_Thread_Mutex>::broadcast (void)
-{
- return ACE_OS::cond_broadcast (&this->cond_);
-}
-
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 8061f3b3d63..19de7846c64 100644
--- a/ACE/ace/Condition_Recursive_Thread_Mutex.h
+++ b/ACE/ace/Condition_Recursive_Thread_Mutex.h
@@ -33,7 +33,6 @@ 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
@@ -109,9 +108,13 @@ private:
ACE_Recursive_Thread_Mutex &mutex_;
};
+// *NOTE*: prevent implicit instantiations by includees to relieve the linker
+#if defined (__GNUG__)
+// g++ (5.2.1) does not support attributes on explicit template instantiations
+extern template class ACE_Condition<ACE_Recursive_Thread_Mutex>;
#else
extern template ACE_Export class ACE_Condition<ACE_Recursive_Thread_Mutex>;
-#endif
+#endif /* __GNUG__ */
typedef ACE_Condition<ACE_Recursive_Thread_Mutex> ACE_Condition_Recursive_Thread_Mutex;
diff --git a/ACE/ace/Condition_Recursive_Thread_Mutex.inl b/ACE/ace/Condition_Recursive_Thread_Mutex.inl
index 44e4e09c3a7..30895e26f7c 100644
--- a/ACE/ace/Condition_Recursive_Thread_Mutex.inl
+++ b/ACE/ace/Condition_Recursive_Thread_Mutex.inl
@@ -13,4 +13,16 @@ ACE_Condition<ACE_Recursive_Thread_Mutex>::mutex (void)
return this->mutex_;
}
+ACE_INLINE int
+ACE_Condition<ACE_Recursive_Thread_Mutex>::signal (void)
+{
+ return ACE_OS::cond_signal (&this->cond_);
+}
+
+ACE_INLINE int
+ACE_Condition<ACE_Recursive_Thread_Mutex>::broadcast (void)
+{
+ return ACE_OS::cond_broadcast (&this->cond_);
+}
+
ACE_END_VERSIONED_NAMESPACE_DECL