AtomicRefCounted

A atomic reference counted resource. Objects implementing this interface can be safely manipulated as shared.

Members

Functions

dispose
void dispose()
Undocumented in source.
rcLock
AtomicRefCounted rcLock()
rcLockShared
shared(AtomicRefCounted) rcLockShared()

Get a reference to this if 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
AtomicRefCounted release(Flag!"disposeOnZero" disposeOnZero)
releaseShared
shared(AtomicRefCounted) releaseShared(Flag!"disposeOnZero" 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
AtomicRefCounted retain()
retainShared
shared(AtomicRefCounted) retainShared()

Atomically increment the reference count.

Properties

refCount
size_t refCount [@property getter]
refCountShared
size_t refCountShared [@property getter]

Atomically loads the number of active references.

Inherited Members

From Disposable

dispose
void dispose()

Dispose the underlying resource

Meta