diff options
Diffstat (limited to 'ACE/ace/Atomic_Op_T.inl')
-rw-r--r-- | ACE/ace/Atomic_Op_T.inl | 17 |
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 (); |