Document QAtomic testAndSet
[ChangeLog][QtCore][QAtomic] Documented new overloads of testAndSet() that were originally added for 5.3. Fixes: QTBUG-103008 Change-Id: I96c7b5828dc284651e6514389f405d7670d6784b Reviewed-by: Marc Mutz <marc.mutz@qt.io> (cherry picked from commit b62c3a85452aecf4f6c863645db34857b05d5ebf) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
ee349ffba0
commit
b627f51978
@ -397,14 +397,21 @@
|
||||
|
||||
Atomic test-and-set.
|
||||
|
||||
\note If you use this function in a loop, consider using the overload with the
|
||||
additional \c{T ¤tValue} argument instead, which avoids the extra load() on
|
||||
failure.
|
||||
|
||||
If the current value of this QAtomicInteger is the \a expectedValue,
|
||||
the test-and-set functions assign the \a newValue to this
|
||||
QAtomicInteger and return true. If the values are \e not the same,
|
||||
this function does nothing and returns \c false.
|
||||
|
||||
//![memory-order-relaxed]
|
||||
This function uses \e relaxed \l {QAtomicInteger#Memory
|
||||
ordering}{memory ordering} semantics, leaving the compiler and
|
||||
processor to freely reorder memory accesses.
|
||||
//![memory-order-relaxed]
|
||||
|
||||
*/
|
||||
|
||||
/*!
|
||||
@ -412,15 +419,21 @@
|
||||
|
||||
Atomic test-and-set.
|
||||
|
||||
\note If you use this function in a loop, consider using the overload with the
|
||||
additional \c{T ¤tValue} argument instead, which avoids the extra load() on
|
||||
failure.
|
||||
|
||||
If the current value of this QAtomicInteger is the \a expectedValue,
|
||||
the test-and-set functions assign the \a newValue to this
|
||||
QAtomicInteger and return true. If the values are \e not the same,
|
||||
this function does nothing and returns \c false.
|
||||
|
||||
//![memory-order-acquire]
|
||||
This function uses \e acquire \l {QAtomicInteger#Memory
|
||||
ordering}{memory ordering} semantics, which ensures that memory
|
||||
access following the atomic operation (in program order) may not
|
||||
be re-ordered before the atomic operation.
|
||||
//![memory-order-acquire]
|
||||
*/
|
||||
|
||||
/*!
|
||||
@ -428,15 +441,21 @@
|
||||
|
||||
Atomic test-and-set.
|
||||
|
||||
\note If you use this function in a loop, consider using the overload with the
|
||||
additional \c{T ¤tValue} argument instead, which avoids the extra load() on
|
||||
failure.
|
||||
|
||||
If the current value of this QAtomicInteger is the \a expectedValue,
|
||||
the test-and-set functions assign the \a newValue to this
|
||||
QAtomicInteger and return true. If the values are \e not the same,
|
||||
this function does nothing and returns \c false.
|
||||
|
||||
//![memory-order-release]
|
||||
This function uses \e release \l {QAtomicInteger#Memory
|
||||
ordering}{memory ordering} semantics, which ensures that memory
|
||||
access before the atomic operation (in program order) may not be
|
||||
re-ordered after the atomic operation.
|
||||
//![memory-order-release]
|
||||
*/
|
||||
|
||||
/*!
|
||||
@ -444,15 +463,78 @@
|
||||
|
||||
Atomic test-and-set.
|
||||
|
||||
\note If you use this function in a loop, consider using the overload with the
|
||||
additional \c{T ¤tValue} argument instead, which avoids the extra load() on
|
||||
failure.
|
||||
|
||||
If the current value of this QAtomicInteger is the \a expectedValue,
|
||||
the test-and-set functions assign the \a newValue to this
|
||||
QAtomicInteger and return true. If the values are \e not the same,
|
||||
this function does nothing and returns \c false.
|
||||
|
||||
//![memory-order-ordered]
|
||||
This function uses \e ordered \l {QAtomicInteger#Memory
|
||||
ordering}{memory ordering} semantics, which ensures that memory
|
||||
access before and after the atomic operation (in program order)
|
||||
may not be re-ordered.
|
||||
//![memory-order-ordered]
|
||||
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn template <typename T> bool QAtomicInteger<T>::testAndSetRelaxed(T expectedValue, T newValue, T ¤tValue)
|
||||
\since 5.3
|
||||
|
||||
Atomic test-and-set.
|
||||
|
||||
If the current value of this QAtomicInteger is the \a expectedValue, the
|
||||
test-and-set functions assign the \a newValue to this QAtomicInteger and
|
||||
return \c true. If the values are \e not the same, the functions load the
|
||||
current value of this QAtomicInteger into \a currentValue and return \c false.
|
||||
|
||||
\include qatomic.cpp memory-order-relaxed
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn template <typename T> bool QAtomicInteger<T>::testAndSetAcquire(T expectedValue, T newValue, T ¤tValue)
|
||||
\since 5.3
|
||||
|
||||
Atomic test-and-set.
|
||||
|
||||
If the current value of this QAtomicInteger is the \a expectedValue, the
|
||||
test-and-set functions assign the \a newValue to this QAtomicInteger and
|
||||
return \c true. If the values are \e not the same, the functions load the
|
||||
current value of this QAtomicInteger into \a currentValue and return \c false.
|
||||
|
||||
\include qatomic.cpp memory-order-acquire
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn template <typename T> bool QAtomicInteger<T>::testAndSetRelease(T expectedValue, T newValue, T ¤tValue)
|
||||
\since 5.3
|
||||
|
||||
Atomic test-and-set.
|
||||
|
||||
If the current value of this QAtomicInteger is the \a expectedValue, the
|
||||
test-and-set functions assign the \a newValue to this QAtomicInteger and
|
||||
return \c true. If the values are \e not the same, the functions loads the
|
||||
current value of this QAtomicInteger into \a currentValue and return \c false.
|
||||
|
||||
\include qatomic.cpp memory-order-release
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn template <typename T> bool QAtomicInteger<T>::testAndSetOrdered(T expectedValue, T newValue, T ¤tValue)
|
||||
\since 5.3
|
||||
|
||||
Atomic test-and-set.
|
||||
|
||||
If the current value of this QAtomicInteger is the \a expectedValue, the
|
||||
test-and-set functions assign the \a newValue to this QAtomicInteger and
|
||||
return \c true. If the values are \e not the same, it loads the current
|
||||
value of this QAtomicInteger into \a currentValue and return \c false.
|
||||
|
||||
\include qatomic.cpp memory-order-ordered
|
||||
*/
|
||||
|
||||
/*!
|
||||
|
@ -70,6 +70,11 @@ public:
|
||||
bool testAndSetRelease(T expectedValue, T newValue);
|
||||
bool testAndSetOrdered(T expectedValue, T newValue);
|
||||
|
||||
bool testAndSetRelaxed(T expectedValue, T newValue, T ¤tValue);
|
||||
bool testAndSetAcquire(T expectedValue, T newValue, T ¤tValue);
|
||||
bool testAndSetRelease(T expectedValue, T newValue, T ¤tValue);
|
||||
bool testAndSetOrdered(T expectedValue, T newValue, T ¤tValue);
|
||||
|
||||
static constexpr bool isFetchAndStoreNative();
|
||||
static constexpr bool isFetchAndStoreWaitFree();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user