Hacker News new | ask | show | jobs
by aliguori 5521 days ago
Most C++ implementations throw their hands up at setjmp/longjmp/setcontext/makecontext.

Even if it appears to work, it's a dangerous set of routines to use in C++.

4 comments

Yeah, this is going to mix very badly with exceptions.

Also, a little rootling around on the web reveals the following statement in IBM's z/OS docs:

"Do not issue getcontext() in a C++ constructor or destructor, since the saved context would not be usable in a subsequent setcontext() or swapcontext() after the constructor or destructor returns."

Indeed. This was more of an experiment than anything else. Ideally, I should have a function that catches all exceptions before calling the user's function to make it safer.
That's how I've always felt. Coroutines are fun to play with in C++, but I'd never be caught dead using them in production code.
Do you think they are safer or more dangerous than threads?