草庐IT

InterlockedExchangeAdd

全部标签

c++ - 为什么没有 InterlockedExchange Subtract 64?

在WindowsAPI上,有InterlockedExchangeAddInterlockedExchangeAdd64InterlockedExchangeSubtract为什么没有InterlockedExchangeSubtract64?我想对64位值(LONGLONG)执行原子操作,而不必使用互斥锁。 最佳答案 简单地否定您传递给InterlockedExchangeAdd64的操作数。换句话说,利用x-y等于x+(-y)这一事实。 关于c++-为什么没有InterlockedE

c# - 32 位环境下 64 位变量的原子增量

正在为anotherquestion写一个答案出现了一些有趣的事情,现在我无法理解Interlocked.Increment(reflongvalue)如何在32位系统上工作。让我解释一下。NativeInterlockedIncrement64现在在为32位环境编译时不可用,好吧,这是有道理的,因为在.NET中你不能按要求对齐内存,它可以从managed中调用然后他们放弃了它。在.NET中,我们可以使用对64位变量的引用来调用Interlocked.Increment(),我们仍然对其对齐方式没有任何约束(例如在结构中,也可以在哪里我们可能会使用FieldOffset和StructL

linux - 与使用 Delphi 10.2 的 Linux 的 InterlockedExchangeAdd 等效)

Delphi10.2(支持Linux)有一个跨平台函数AtomicExchange,相当于WindowsInterlokekdEchange。到目前为止一切顺利...我必须使用没有等效AtomicExchangeAdd的InterlockedExchangeAdd移植Win32代码。我的问题是:在为Linux编译时,我可以使用什么来替换InterlockedExchangeAdd? 最佳答案 System.SysUtils.pas中有此函数的隐藏实现:functionAtomicExchangeAdd(varAddend:Integ