This is easy to do and can be useful when using an atomic initialization counter. The only platform where not returning the new value might be more efficient than returning it is Solaris which is not really relevant any more and on all the other platforms the functions we were already using provided this value already (or almost, in case of using gcc builtins, when we just have to use a different one).
46 lines
1.4 KiB
C
46 lines
1.4 KiB
C
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: atomic.h
|
|
// Purpose: interface of global functions
|
|
// Author: wxWidgets team
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
// ============================================================================
|
|
// Global functions/macros
|
|
// ============================================================================
|
|
|
|
/** @addtogroup group_funcmacro_atomic */
|
|
//@{
|
|
|
|
/**
|
|
This function increments @a value in an atomic manner.
|
|
|
|
Whenever possible wxWidgets provides an efficient, CPU-specific,
|
|
implementation of this function. If such implementation is available, the
|
|
symbol wxHAS_ATOMIC_OPS is defined. Otherwise this function still exists
|
|
but is implemented in a generic way using a critical section which can be
|
|
prohibitively expensive for use in performance-sensitive code.
|
|
|
|
Returns the new value after the increment (the return value is only
|
|
available since wxWidgets 3.1.7, this function doesn't return anything in
|
|
previous versions of the library).
|
|
|
|
@header{wx/atomic.h}
|
|
*/
|
|
wxInt32 wxAtomicInc(wxAtomicInt& value);
|
|
|
|
/**
|
|
This function decrements value in an atomic manner.
|
|
|
|
Returns the new value after decrementing it.
|
|
|
|
@see wxAtomicInc
|
|
|
|
@header{wx/atomic.h}
|
|
*/
|
|
wxInt32 wxAtomicDec(wxAtomicInt& value);
|
|
|
|
//@}
|
|
|