當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。