#include <threadsaferef.h>
Template for safe access to BaseRef from multiple threads. This comes at the cost of extra atomic operations and will cause high contention if used thoughtless.
ThreadSafeRef<SampleClassRef> g_global;// consumer thread SampleClassRef now = g_global;
// producer thread SampleClassRef newObject = CreateSomething(); g_global = newObject;
REFERENCE | Type of the reference that will be stored thread-safe. |
公共成员函数 |
|
ThreadSafeRef () | |
ThreadSafeRef (const REFERENCE &strongReference) | |
ThreadSafeRef (const ThreadSafeRef & src ) | |
ThreadSafeRef ( ThreadSafeRef && src ) | |
~ThreadSafeRef () | |
ThreadSafeRef & | operator= (const REFERENCE &strongReference) |
Bool | TryCompareAndSwap (const REFERENCE &strongReference, const REFERENCE &compare) |
ThreadSafeRef & | operator= (const ThreadSafeRef & src ) |
ThreadSafeRef & | operator= (std::nullptr_t) |
ThreadSafeRef & | operator= ( ThreadSafeRef && src ) |
REFERENCE | Get () const |
operator REFERENCE () const |
Private Types |
|
using | DereferencedPtr = typename REFERENCE::ReferencedType * |
Additional Inherited Members |
|
![]() |
|
MAXON_IMPLICIT | ThreadSafePtr (REFERENCE::ReferencedType * src=nullptr) |
~ThreadSafePtr () | |
REFERENCE::ReferencedType * | AcquirePtr () const |
void | ReleasePtr (REFERENCE::ReferencedType * ptr) const |
REFERENCE::ReferencedType * | ChangePtr (REFERENCE::ReferencedType * ptr) const |
Bool | TryCompareAndSwapPtr (REFERENCE::ReferencedType * ptr, REFERENCE::ReferencedType * compare) const |
REFERENCE::ReferencedType * | AttemptAcquirePtr () const |
![]() |
|
AtomicUInt | _ptr |
|
private |
ThreadSafeRef | ( | ) |
|
explicit |
[in] | strongReference | BaseRef with strong reference to an object. |
ThreadSafeRef | ( | const ThreadSafeRef < REFERENCE > & | src | ) |
Copy constructs a thread safe pointer. THREADSAFE.
[in] | src | Source thread safe pointer. |
ThreadSafeRef | ( | ThreadSafeRef < REFERENCE > && | src | ) |
Moves a thread safe pointer. THREADSAFE.
[in] | src | Source thread safe pointer. |
~ ThreadSafeRef | ( | ) |
THREADSAFE.
ThreadSafeRef & operator= | ( | const REFERENCE & | strongReference | ) |
Adds a strong reference. THREADSAFE.
[in] | strongReference | BaseRef with strong reference to an object. |
Bool TryCompareAndSwap | ( | const REFERENCE & | strongReference , |
const REFERENCE & | compare | ||
) |
Atomic compare and swap of the reference. THREADSAFE.
[in] | strongReference | BaseRef with strong reference to an object. |
[in] | compare | Old BaseRef to compare with current value. |
ThreadSafeRef & operator= | ( | const ThreadSafeRef < REFERENCE > & | src | ) |
Copies a thread safe pointer.
[in] | src | Source thread safe pointer. |
ThreadSafeRef & operator= | ( | std::nullptr_t | ) |
Resets the thread safe pointer.
ThreadSafeRef & operator= | ( | ThreadSafeRef < REFERENCE > && | src | ) |
Moves a thread safe pointer.
[in] | src | Source thread safe pointer. |
REFERENCE Get | ( | ) | const |
Constructs a new BaseRef with a strong reference. THREADSAFE.
operator REFERENCE | ( | ) | const |
Constructs a new BaseRef with a strong reference. THREADSAFE.