gpt4 book ai didi

c - Delphi 是否有任何等效于 C 的 volatile 变量?

转载 作者:太空狗 更新时间:2023-10-29 16:37:41 25 4
gpt4 key购买 nike

在 C 和 C++ 中,变量可以标记为 volatile ,这意味着编译器不会优化它,因为它可能在声明对象的外部被修改。 Delphi 编程中是否有等效项?如果不是关键字,也许可以变通?

我的想法是使用 Absolute,但我不确定,这可能会带来其他副作用。

最佳答案

简短的回答:没有。

但是,如果您采用这种方法,我不知道在任何情况下编译器的保守方法会改变读取或写入的次数:

读取跨线程可见位置时,在进行任何进一步操作之前将其值保存到本地;同样,将写入限制为单个分配。

当在表达式之间调用非内联方法时,Delphi 编译器不会对非局部位置表达式执行公共(public)子表达式消除 (CSE),因为编译器不会进行过程间优化,因此它是不正确的即使是单线程代码。

因此,您可能希望使用 InterlockedExchange() 进行读写以强制执行此操作;此外,这将导致完全内存屏障,因此处理器也不会重新排序读取和写入。

关于c - Delphi 是否有任何等效于 C 的 volatile 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/232075/

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