Здравствуйте, FR, Вы писали:
FR>Здравствуйте, gandjustas, Вы писали:
MTD>>>Не сложней, чем на Java, например.
G>>Неправда твоя. Покажи как сделать продолжения и при этом не устраивать аццкие пляски с деаллокацией памяти.
FR>В boost есть Coroutine
Boost.Coroutine is implemented around a stack switching model; that is, every time a coroutine is entered, the following actions are carried:
The caller instruction pointer and callee clobbered registers are saved on the caller stack (this is done automatically as part of the call to the context switching routine respectively by the compiler and by the CPU).
the set of callee save registers are saved by the context switching routine on the caller stack.
The caller stack pointer is saved inside the caller context structure. This structure is stored on the coroutine context if a yield_to or yield is being performed, else it is also on the caller stack.
The callee stack pointer is retrieved from the callee context structure and set as current stack pointer.
Callee save registers are popped from the callee stack.
The context switching routine returns, restoring automatically from the new stack the called coroutine instruction pointer and clobbered registers.
По моему это есть всяких сортов пляски. Хотя я не уверен, давно пора пляски с памятью и стеком сделать частью языка С++, как это было сделано со смартпоинтерами. Тогда уж точно нельзя будет придраться