|
template<typename TYPE > |
__DECL_IMPORT TYPE | Increment (TYPE volatile *pnValue) noexcept |
|
template<typename TYPE > |
__DECL_IMPORT TYPE | Decrement (TYPE volatile *pnValue) noexcept |
|
template<typename TYPE > |
__DECL_IMPORT TYPE | ExchangeAdd (TYPE volatile *pnValue, TYPE nValue) noexcept |
|
template<typename TYPE > |
__DECL_IMPORT TYPE | Exchange (TYPE volatile *pnValue, TYPE nValue) noexcept |
|
template<typename TYPE > |
__DECL_IMPORT TYPE | CompareExchange (TYPE volatile *pnValue, TYPE nValue, TYPE lComparand) noexcept |
|
template<> |
INTER32_t | Increment< INTER32_t > (INTER32_t volatile *pnValue) noexcept |
|
template<> |
INTER32_t | Decrement< INTER32_t > (INTER32_t volatile *pnValue) noexcept |
|
template<> |
INTER32_t | ExchangeAdd< INTER32_t > (INTER32_t volatile *pnValue, INTER32_t nValue) noexcept |
|
template<> |
INTER32_t | Exchange< INTER32_t > (INTER32_t volatile *pnValue, INTER32_t nValue) noexcept |
|
template<> |
INTER32_t | CompareExchange< INTER32_t > (INTER32_t volatile *pnValue, INTER32_t nValue, INTER32_t lComparand) noexcept |
|
template<> |
INT64 | Increment< INT64 > (INT64 volatile *pnValue) noexcept |
|
template<> |
INT64 | Decrement< INT64 > (INT64 volatile *pnValue) noexcept |
|
template<> |
INT64 | ExchangeAdd< INT64 > (INT64 volatile *pnValue, INT64 nValue) noexcept |
|
template<> |
INT64 | Exchange< INT64 > (INT64 volatile *pnValue, INT64 nValue) noexcept |
|
template<> |
INT64 | CompareExchange< INT64 > (INT64 volatile *pnValue, INT64 nValue, INT64 lComparand) noexcept |
|
template<> |
UINT | Increment< UINT > (UINT volatile *pnValue) noexcept |
|
template<> |
UINT | Decrement< UINT > (UINT volatile *pnValue) noexcept |
|
template<> |
UINT | ExchangeAdd< UINT > (UINT volatile *pnValue, UINT nValue) noexcept |
|
template<> |
UINT | Exchange< UINT > (UINT volatile *pnValue, UINT nValue) noexcept |
|
template<> |
UINT | CompareExchange< UINT > (UINT volatile *pnValue, UINT nValue, UINT lComparand) noexcept |
|
template<> |
UINT64 | Increment< UINT64 > (UINT64 volatile *pnValue) noexcept |
|
template<> |
UINT64 | Decrement< UINT64 > (UINT64 volatile *pnValue) noexcept |
|
template<> |
UINT64 | ExchangeAdd< UINT64 > (UINT64 volatile *pnValue, UINT64 nValue) noexcept |
|
template<> |
UINT64 | Exchange< UINT64 > (UINT64 volatile *pnValue, UINT64 nValue) noexcept |
|
template<> |
UINT64 | CompareExchange< UINT64 > (UINT64 volatile *pnValue, UINT64 nValue, UINT64 lComparand) noexcept |
|
namespace for interlock templates for int 32 and 64 Protected unitary operations that are safe on multi threaded/processor machines. INT32 for 32 bit, INT64 for 64 bit.
- Note
- unitary (single instruction) ops like ++ are NOT SAFE on multi CPU systems !! Tested in cThread.
-
The parameters for this function must be aligned on a 32-bit boundary; otherwise, the function will behave unpredictably on multiprocessor x86 systems and any non-x86 systems. See _aligned_malloc.
-
should use __DECL_ALIGN(X) to make sure we are aligned.