gpt4 book ai didi

C setjmp.h 和 ucontext.h,哪个更好?

转载 作者:行者123 更新时间:2023-11-30 23:51:45 24 4
gpt4 key购买 nike

嗨,我需要从一个地方跳到另一个地方...

但我想知道哪个更好用,setjmp 或 ucontext,例如:

  • setjmp 和 ucontext 是否可移植?
  • 我的代码使用这些库是线程安全的吗?
  • 为什么用一个而不是另一个?
  • 哪个又快又安全?
  • ...(有人请,可以回答我忘记放在这里的 future 问题吗?)

  • 请提供更多我要求的信息,例如示例或一些文档...

    我在网上搜索过,但我只有像setjmp这样的C中的异常处理,而我对ucontex.h一无所知,我知道它用于多任务,它和pthread有什么区别?

    非常感谢。

    最佳答案

    setjmp可移植(ISO C89 和 C99)和 ucontext (在 SUSv3 中已过时并从 SUSv4/POSIX 2008 中删除)不是。然而ucontext在规范上要强大得多。在实践中,如果你使用了 setjmp/longjmp以及信号处理程序和备用信号处理堆栈,您可以使它们与 ucontext 一样强大,但它们不是“便携的”。

    两者都不应用于多线程。为此,POSIX 线程(pthread 函数)。我有几个理由这么说:

  • 如果您正在编写线程代码,您不妨让它实际并发运行。我们正在达到非并行计算的速度限制, future 的机器将越来越并行,因此请充分利用这一点。
  • ucontext已从标准中删除, future 的操作系统(甚至一些现有的操作系​​统?)可能不支持
  • 滚动您自己的线程不能对您可能想要使用的库代码透明。它可能会破坏对并发、锁定等做出合理假设的库代码。 只要您的多线程是协作的而不是基于异步信号的,这样的问题可能不会太多,但是一旦您深入了解不可移植hacks 的东西会变得非常脆弱。
  • ……也许还有更多我现在想不出来的原因。 :-)
  • 关于C setjmp.h 和 ucontext.h,哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5536913/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com