![]() |
![]() ![]() ![]() ![]() |
![]() |
Class protected_stack_allocatorBoost , Chapter 1. Coroutine , Stack allocation
|
||||||||||||
![]() |
Important |
|---|---|
Использованиеprotected_stack_allocatorдорого. То есть запуск нового корутина с новым стеком стоит дорого; выделенный стек так же эффективен в использовании, как и любой другой стек. |
![]() |
Note |
|---|---|
Приложенный< |
#include <boost/coroutine/protected_stack_allocator.hpp> template< typename traitsT > struct basic_protected_stack_allocator { typedef traitT traits_type; void allocate( stack_context &, std::size_t size); void deallocate( stack_context &); } typedef basic_protected_stack_allocator< stack_traits > protected_stack_allocator
void allocate( stack_context
& sctx, std::size_t size)
<traits_type::minimum_size()
<=size>и<!traits_type::is_unbounded()&&
(traits_type::maximum_size()>=size)>.
Выделяет память не менее<size>байтов и сохраняет указатель на стек и его фактический размер в<sctx>. В зависимости от архитектуры (стек растет вниз/вверх) сохраненный адрес является самым высоким/самым низким адресом стека.
void deallocate( stack_context
& sctx)
<sctx.sp>действительно,<traits_type::minimum_size()<=sctx.size>и<!
traits_type::is_unbounded()
&&(
traits_type::maximum_size()
>=sctx.size)>.
Распределяет пространство стека.
Статья Class protected_stack_allocator раздела Chapter 1. Coroutine Stack allocation может быть полезна для разработчиков на c++ и boost.
:: Главная :: Stack allocation ::
реклама |