В средах unix семейство функций makecontext () / swapcontext ()
иногда используется для реализации сопрограмм в C. Однако эти функции напрямую управляют стеком и потоком выполнения. Часто, когда эти низкоуровневые функции сильно различаются при переходе с C на C ++.
Итак, вопрос в том, возникнет ли какая-либо проблема с реализацией сопрограмм с использованием makecontext ()
и swapcontext ()
. Конечно, очевидно, что нужно очень внимательно следить за тем, чтобы исключение никогда не могло избежать такой сопрограммы, поскольку для этого в стеке не будет обработчика исключений, и программа, скорее всего, будет иметь segfault. Но кроме этого, есть ли какая-либо несовместимость между тем, как C ++ обрабатывает вещи внутри, и makecontext ()
и setcontext ()
изменяют путь выполнения?