summaryrefslogtreecommitdiff
path: root/ACE/ace/Atomic_Op_T.inl
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/ace/Atomic_Op_T.inl')
-rw-r--r--ACE/ace/Atomic_Op_T.inl17
1 files changed, 17 insertions, 0 deletions
diff --git a/ACE/ace/Atomic_Op_T.inl b/ACE/ace/Atomic_Op_T.inl
index def9e9a435d..df549538e2b 100644
--- a/ACE/ace/Atomic_Op_T.inl
+++ b/ACE/ace/Atomic_Op_T.inl
@@ -154,6 +154,16 @@ ACE_Atomic_Op_Ex<ACE_LOCK, TYPE>::operator= (
template <class ACE_LOCK, class TYPE>
ACE_INLINE TYPE
+ACE_Atomic_Op_Ex<ACE_LOCK, TYPE>::exchange (TYPE newval)
+{
+ // ACE_TRACE ("ACE_Atomic_Op_Ex<ACE_LOCK, TYPE>::exchange");
+ ACE_GUARD_RETURN (ACE_LOCK, ace_mon, this->mutex_, this->value_);
+ std::swap (this->value_, newval);
+ return newval;
+}
+
+template <class ACE_LOCK, class TYPE>
+ACE_INLINE TYPE
ACE_Atomic_Op_Ex<ACE_LOCK, TYPE>::value (void) const
{
// ACE_TRACE ("ACE_Atomic_Op_Ex<ACE_LOCK, TYPE>::value");
@@ -308,6 +318,13 @@ ACE_Atomic_Op<ACE_LOCK, TYPE>::operator< (
template <class ACE_LOCK, class TYPE>
ACE_INLINE TYPE
+ACE_Atomic_Op<ACE_LOCK, TYPE>::exchange (TYPE newval)
+{
+ return this->impl_.exchange (newval);
+}
+
+template <class ACE_LOCK, class TYPE>
+ACE_INLINE TYPE
ACE_Atomic_Op<ACE_LOCK, TYPE>::value (void) const
{
return this->impl_.value ();