- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
C89 标准规定:
At sequence points volatile objects are stable in the sense that previous
evaluations are complete and subsequent evaluations have not yet occurred.
C89 标准还规定:
When the processing of the abstract machine is interrupted by receipt of a
signal, only the values of objects as of the previous sequence point may be
relied on.
这些要求让我很困惑,因为我无法想象他们会如何实际执行。我对x86-64只有初步的了解汇编程序,但这就是我脑海中的想法。假设我们有一个 volatile 结构,它有好几千字节大。如果您复制现有的struct 到 C 中的这个 volatile struct 中,那么生成的机器代码可能非常大。现在,假设这些大量的机器代码是执行,并且系统上的某些 shell 执行“kill”命令过程,导致一些信号的上升。我的理解(或者更确切地说,我的猜测)是该过程会在复制中途中断,从而导致对 volatile 的要求被打破,并导致结构从任何信号处理程序的视角。
显然事情实际上并不是这样运作的,但是它们实际上是如何运作的工作?为了争论,请随意假设平台是 x86-64或 x86 Linux、Windows、OS X 或其他一些常见的 UNIX。
最佳答案
At sequence points volatile objects are stable in the sense that previous evaluations are complete and subsequent evaluations have not yet occurred.
这不会被违反,因为中断不是序列点。此规则仅描述“在序列点”发生的情况。如果我们在序列点 A 之后和序列点 B 完成之前被打断,我们就不会“在”序列点 A 或序列点 B。
When the processing of the abstract machine is interrupted by receipt of a signal, only the values of objects as of the previous sequence point may be relied on.
这不会被违反。如果我们在序列点 A 和 B 之间被打断,比如在中间拷贝中,则可以依赖在序列点 A 所做的所有更改。他们完成了。
能够依赖先前的修改并不意味着您不会看到后续修改的任何效果。在未来的一些代码可以修改它们之前,值是稳定的。
所以显而易见的实现并没有违反任何一个要求。
关于c++ - 信号如何与序列点相互作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975051/
我打算在 AngularJS 中尝试一个项目,其中所有组件都将使用 Polymer 开发。现在在开始这个项目之前,我有几个疑问: 在使用 Angular 服务获取数据后,我可以更新 Polymer 组
假设我有多个线程正在从文件中读取,并且我想确保在任何时间点只有一个线程正在从文件中读取。 实现这一点的一种方法是使用 mvar :: MVar ()并确保如下互斥: thread = do ..
对于只有因子列的给定数据框,我想列出数据中没有出现的最多 m 个属性的所有因子组合。下面是一个简单的例子: d cc unlist(cc, recursive=F) -> cc length(cc)
对于相关图,我希望有一个光学正方形图(x 和 y 的像素长度相同),但 x 和 y 也有一定的轴限制。我可以分别获取这两个,但不能同时获取: import matplotlib.pyplot as p
对于相关图,我希望有一个光学正方形图(x 和 y 的像素长度相同),但 x 和 y 也有一定的轴限制。我可以分别获取这两个,但不能同时获取: import matplotlib.pyplot as p
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 7年前关闭。 Improve t
我是一名优秀的程序员,十分优秀!