[英]Does Ruby have a method_missing equivalent for undefined instance variables?
[英]Does Ruby have atomic variables?
Ruby有原子變量,比如Java中的AtomicInteger
或AtomicBoolean
嗎?
這是一個寶石 ,可能提供你需要的東西( 從這里鏈接 )。 代碼干凈而緊湊,足以快速理解 (它基本上是一個Mutex,正如其他人所建議的那樣),如果你想編寫自己的Mutex包裝器,它應該給你一個很好的起點。
來自github的一個輕微修改的例子:
require 'atomic'
my_atomic = Atomic.new('')
# set method 1:
my_atomic.update { |v| v + 'hello' }
# set method 2:
begin
my_atomic.try_update { |v| v + 'world' }
rescue Atomic::ConcurrentUpdateError => cue
# deal with it (retry, propagate, etc)
end
# access with:
puts my_atomic.value
應該注意的是,根據互斥體實現原子類型會破壞使用“原子”抽象的目的。
適當的原子實現會發出利用CPU的比較和交換指令的代碼。
按照建議使用Mutex,如下所示:
i = 0
lock = Mutex.new
# Then whenever you want to modify it:
lock.synchronize do
i += 1
end
我不認為Ruby有一個。 但是,有一個Mutex可以用來模仿一個。
不是本地的,但你可以使用Mutex
類獲得一些原子性。
您可以實現自己的AtomicString
,例如,使用Mutex
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.