Здравствуйте. Думаю, вопрос уже немало обсосан, но осмелюсь поднять очередную тему.
Реализовал сопрограммы используя WinAPI-функции SetThreadContext и GetThreadContext. Точнее, я подглядел как это сделал другой человек

Он эмулировал ими стандартные POSIX-функции getcontext/setcontext/makecontext/swapcontext и потом, на их основе "возвел" класс сопрограммы. Все работает четко, но исключения не ловятся

То есть если я внутри сопрограмммы напишу:
try
{
throw 1;
}
catch(int)
{
},
то исключение не словится, будет unhadled exception. Это делает меня плакать, я о сопрограммах джва года мечтал

Соответственно, вопросы знатокам:
1. Можно ли как-то "пропатчить" SetThreadContext и GetThreadContext чтобы исключения работали?
2. POSIX-функции getcontext/setcontext/makecontext/swapcontext на Unix-ах дружат с исключениями? Или вообще такой подход нежизнеспособен?
3. boost.Coroutines — стоящая вещь? Она делает хорошие портабельные и компактные сопрограммы? Или она тоже работает только в тепличных условиях?
4. Сопрограммы вообще могут быть портабельными в пределах Win32-Unix(MacOS)?
5. А как с мобильными платформами? Android дружит с этим? Он же вроде потомок Unix. А iOS?