用法:
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)
相關用法
- Julia Threads.atomic_min!用法及代碼示例
- Julia Threads.atomic_xor!用法及代碼示例
- Julia Threads.atomic_and!用法及代碼示例
- Julia Threads.atomic_max!用法及代碼示例
- Julia Threads.atomic_or!用法及代碼示例
- Julia Threads.atomic_sub!用法及代碼示例
- Julia Threads.atomic_nand!用法及代碼示例
- Julia Threads.atomic_xchg!用法及代碼示例
- Julia Threads.atomic_add!用法及代碼示例
- Julia Threads.Atomic用法及代碼示例
- Julia Test.@test_skip用法及代碼示例
- Julia Test.@test_throws用法及代碼示例
- Julia Timer方法用法及代碼示例
- Julia Test.@test用法及代碼示例
- Julia Test.@test_broken用法及代碼示例
- Julia Test.@test_deprecated用法及代碼示例
- Julia Test.@test_logs用法及代碼示例
- Julia Test.@testset用法及代碼示例
- Julia splice!用法及代碼示例
- Julia @cfunction用法及代碼示例
- Julia LibGit2.count用法及代碼示例
- Julia LinearAlgebra.BLAS.dot用法及代碼示例
- Julia break用法及代碼示例
- Julia sizeof()用法及代碼示例
- Julia :<=用法及代碼示例
注:本文由純淨天空篩選整理自julialang.org 大神的英文原創作品 Base.Threads.atomic_cas! — Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。