3 ms·
> C++: std::threads are not interruptible. This is kinda half-true, since C++ inherits aspects of the C environment, in this case on POSIX systems pthreads asy
by eqvinox 2y ago
> C++: std::threads are not interruptible.
This is kinda half-true, since C++ inherits aspects of the C environment, in this case on POSIX systems pthreads async cancellation [https://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_cancel.html https://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_ca..., https://www.man7.org/linux/man-pages/man3/pthread_cancel.3.html https://www.man7.org/linux/man-pages/man3/pthread_cancel.3.h...]
You can control this through pthread_setcancelstate(), and if it is enabled it will only trigger on specific documented places in C library / system API calls. It is vaguely saner than this generic "throw exception on another thread" concept, but still pretty insane IMHO. Haven't used it myself, not sure if there are circumstances/use cases where I'd enable it.
(To be fair, a lot of other languages are built on top of the C library too and inherit this same behavior, so this isn't quite C++ specific.)
- flqn 2y agoC++ also has stop_token, so although they're not natively interruptable a mechanism for implementing it exists in the standard.