当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Julia Threads.atomic_cas!用法及代码示例


用法:

Threads.atomic_cas!(x::Atomic{T}, cmp::T, newval::T) where T

原子地 compare-and-set x

以原子方式将 x 中的值与 cmp 进行比较。如果相等,将 newval 写入 x 。否则,保持 x 不变。返回 x 中的旧值。通过将返回的值与 cmp (通过 === )进行比较,可以知道 x 是否已被修改并且现在保存新值 newval

有关详细信息,请参阅 LLVM 的 cmpxchg 指令。

该函数可用于实现事务语义。在交易之前,将值记录在 x 中。事务完成后,仅当 x 同时没有被修改时才存储新值。

例子

julia> x = Threads.Atomic{Int}(3)
Base.Threads.Atomic{Int64}(3)

julia> Threads.atomic_cas!(x, 4, 2);

julia> x
Base.Threads.Atomic{Int64}(3)

julia> Threads.atomic_cas!(x, 3, 2);

julia> x
Base.Threads.Atomic{Int64}(2)

相关用法


注:本文由纯净天空筛选整理自julialang.org 大神的英文原创作品 Base.Threads.atomic_cas! — Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。