Interface IAtomicRefCounted
A atomic reference counted resource.
Objects implementing this interface can be safely manipulated as shared.
Implementing class should mixin atomicRcCode to use the provided implementation.
interface IAtomicRefCounted
;
Properties
Name | Type | Description |
refCount [get]
|
ulong | Atomically loads the number of active references.
|
refCountShared [get]
|
ulong | Atomically loads the number of active references.
|
Methods
Name | Description |
dispose
()
|
Dispose the underlying resource
|
rcLock
()
|
Returns whether the refCount >= 1.
This increases the refCount by 1. rcLock should be used to keep
weak reference and ensures that the resource is not disposed.
The operation is atomic.
|
rcLockShared
()
|
Returns whether the refCount >= 1.
This increases the refCount by 1. rcLock should be used to keep
weak reference and ensures that the resource is not disposed.
The operation is atomic.
|
release
(disposeOnZero)
|
Atomically decrement the reference count.
If refCount reaches zero, and disposeOnZero is set,
the object is locked with its own mutex, and dispose is called.
In most cases, the calling code should set disposeOnZero, unless it
is intended to release the object to give it away.
(such as at the end of a builder function)
|
releaseShared
(disposeOnZero)
|
Atomically decrement the reference count.
If refCount reaches zero, and disposeOnZero is set,
the object is locked with its own mutex, and dispose is called.
In most cases, the calling code should set disposeOnZero, unless it
is intended to release the object to give it away.
(such as at the end of a builder function)
|
retain
()
|
Atomically increment the reference count.
|
retainShared
()
|
Atomically increment the reference count.
|