
Hi, I'm working on a tiny coroutine library based on boost::context. For performance reasons I'd rather keep a pool of stacks instead allocating/deallocating every time. Is it legal to reuse a stack for a different context? namespace ctx = boost::context; ctx::fcontext_t fcm, *fc; void f1(intptr_t) { std::cout << "f1" << std::endl; ctx::jump_fcontext(fc, &fcm, 0); } void f2(intptr_t) { std::cout << "f2" << std::endl; ctx::jump_fcontext(fc, &fcm, 0); } int main(int argc, char * argv[]) { ctx::guarded_stack_allocator alloc; std::size_t size = ctx::guarded_stack_allocator::default_stacksize(); void *sp = alloc.allocate(size); fc = ctx::make_fcontext(sp, size, f1); std::cout << "main: jump 1" << std::endl; ctx::jump_fcontext(&fcm, fc, 0); fc = ctx::make_fcontext(sp, size, f2); // legal? std::cout << "main: jump 2" << std::endl; ctx::jump_fcontext(&fcm, fc, 0); std::cout << "main: done" << std::endl; return 0; }