![]() |
Home | Libraries | People | FAQ | More |
Boost.Fiber supports usage of a segmented_stack
,
i.e. the stack grows on demand. The fiber is created with a minimal stack
size which will be increased as required. Class segmented_stack
models
the stack-allocator concept.
In contrast to protected_fixedsize_stack
and
fixedsize_stack
it creates a stack which grows on demand.
![]() |
Note |
---|---|
Segmented stacks are currently only supported by gcc
from version 4.7 and clang
from version 3.4 onwards. In order to
use a |
#include <boost/fiber/segmented_stack.hpp> struct segmented_stack { segmented_stack(std::size_t stack_size = traits_type::default_size()); stack_context allocate(); void deallocate( stack_context &); }
stack_context allocate()
traits_type::minimum_size()
<= size
and traits_type::is_unbounded()
|| (
traits_type::maximum_size()
>= size)
.
Allocates memory of at least size
bytes and stores a pointer to the stack and its actual size in sctx
. Depending on the architecture
(the stack grows downwards/upwards) the stored address is the highest/lowest
address of the stack.
void deallocate( stack_context
& sctx)
sctx.sp
is valid, traits_type::minimum_size() <= sctx.size
and traits_type::is_unbounded() || ( traits_type::maximum_size() >= sctx.size)
.
Deallocates the stack space.
![]() |
Note |
---|---|
If the library is compiled for segmented stacks, |