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