gpt4 book ai didi

multithreading - 如何进行原子指令

转载 作者:行者123 更新时间:2023-12-03 18:26:58 25 4
gpt4 key购买 nike

在多线程中,如果许多线程更改了全局变量的值,(指令在执行过程中)如下所示:

 value:=value+1;

确保该指令必须是原子指令,那么我应该在代码中添加什么以使该指令原子化?

最佳答案

在现代的Delphi中,您应该使用内部函数 AtomicIncrement 。 RTL中提供了原子操作的一整套此类功能。例如原子交换,原子比较和交换等。

对于您的代码,您将编写:

AtomicIncrement(value);

使用内在函数的好处是,编译器可以在调用站点内联汇编asm指令。

在较早版本的Delphi中,您应该使用 InterlockedIncrement。同样,还有一系列名称相似的函数。

关于multithreading - 如何进行原子指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24068868/

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