gpt4 book ai didi

windows - 为什么 SEH 被认为是 "asynchronous"?

转载 作者:行者123 更新时间:2023-12-02 00:18:23 26 4
gpt4 key购买 nike

我读到的一些关于 SEH(结构化异常处理)的文章/答案认为它是“异步的”。

据我了解,这些异常的整个处理部分发生在引发它们的线程上(在 CPU 级别)。基本上,一旦发生异常,执行就会“跳转”到在当前线程异常处理程序列表上迭代的操作系统代码。

那么我的理解对吗? SEH 的异步究竟是什么?

最佳答案

在异常处理的同步模型中,异常总是被显式抛出;实际的 throw 语句必须出现在源代码中,在指令流中已知且明确定义的点,以便编译器知道何时会发生异常(这也意味着它可以优化异常处理代码,如果它可以证明不会发生异常)。

SEH 是关于 CPU 触发的异常,代码本身没有意识到的事情可能会发生,但可以说是“带外”引发的。它是异步的,因为异常被注入(inject)到甚至不知道它可能发生的代码中,这与信号处理程序可以在主线程中运行的方式非常相似,中断接收到信号时实际发生的任何事情。

SEH 可以被认为很像临时注册的信号处理程序,其中异常条件是信号,__try block 定义处理程序在何处生效,__except如果收到“信号”,则 __finally block 是处理程序。

关于windows - 为什么 SEH 被认为是 "asynchronous"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56298266/

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