View source code
Display the source code in std/experimental/allocator/building_blocks/region.d from which this page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone.

Struct std.experimental.allocator.building_blocks.region.SharedRegion

The threadsafe version of the Region allocator. Allocations and deallocations are lock-free based using cas.

struct SharedRegion(ParentAllocator, uint minAlign = platformAlignment, Flag!("growDownwards") growDownwards = No.growDownwards) ;

Constructors

NameDescription
this (store) Constructs a region backed by a user-provided store. Assumes the memory was allocated with ParentAllocator (if different from NullAllocator).

Fields

NameTypeDescription
parent ParentAllocatorThe parent allocator. Depending on whether ParentAllocator holds state or not, this is a member variable or an alias for ParentAllocator.instance.

Methods

NameDescription
alignedAllocate (n, a) Allocates n bytes of memory aligned at alignment a.
allocate (n) Allocates n bytes of memory. The allocation is served by atomically incrementing a pointer which keeps track of the current used space.
deallocate (b) Deallocates b. This works only if b was obtained as the last call to allocate; otherwise (i.e. another allocation has occurred since) it does nothing.
deallocateAll () Deallocates all memory allocated by this region, which can be subsequently reused for new allocations.
empty () Returns Ternary.yes if no memory has been allocated in this region, Ternary.no otherwise. (Never returns Ternary.unknown.)
goodAllocSize (n) Rounds the given size to a multiple of the alignment
owns (b) Queries whether b has been allocated with this region.

Aliases

NameDescription
alignment Alignment offered.

Authors

License