嗨,我需要从一个地方跳到另一个地方...
但我想知道哪个更好用,setjmp 或 ucontext,例如:
请提供更多我要求的信息,例如示例或一些文档...
我在网上搜索过,但我只有像setjmp这样的C中的异常处理,而我对ucontex.h一无所知,我知道它用于多任务,它和pthread有什么区别?
非常感谢。
最佳答案
setjmp
是可移植的(ISO C89 和 C99),而 ucontext
(在 SUSv3 中已过时并从 SUSv4/POSIX 2008 中删除)不是。然而 ucontext
在规范中要强大得多。在实践中,如果你对 setjmp
/longjmp
和信号处理程序以及备用信号处理堆栈使用讨厌的黑客,你可以使它们与 ucontext
一样强大,但它们不是“可移植的”。
两者都不应用于多线程。为此,POSIX 线程(pthread 函数)。我有几个理由这么说:
ucontext
已从标准中删除, future 的操作系统(或什至一些现有的操作系统)可能不支持 关于C setjmp.h 和 ucontext.h,哪个更好?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5536913/