Ruby ha variabili atomiche, come AtomicInteger
o AtomicBoolean
in Java?Ruby ha variabili atomiche?
risposta
Here is a gem che potrebbe fornire quello che ti serve (trovato linked from here). The code is clean and compact enough to quickly understand (è fondamentalmente un Mutex, come tutti gli altri hanno suggerito), che dovrebbe darti un buon punto di partenza se vuoi scrivere il tuo wrapper Mutex.
Un esempio leggermente modificata da 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
Non credo che Ruby ne abbia uno. Tuttavia, c'è uno Mutex che puoi usare per imitarne uno.
Non in modo nativo, ma è possibile ottenere un po 'di atomicità utilizzando la classe Mutex
.
Probabilmente si potrebbe implementare il proprio AtomicString
, ad esempio, utilizzando un Mutex
.
Va notato che l'implementazione tipi atomici in termini di mutex sconfigge lo scopo di utilizzare l'astrazione 'atomico'.
Le corrette implementazioni atomiche emettono codice che sfrutta l'istruzione di confronto e scambio della CPU.
Usa Mutex come suggerito in questo modo:
i = 0
lock = Mutex.new
# Then whenever you want to modify it:
lock.synchronize do
i += 1
end
- 1. False Condivisione e Variabili atomiche
- 2. La semplice chiamata getter su operazioni atomiche variabili volatili?
- 3. Dichiarare le variabili in Ruby?
- 4. Haskell ha variabili?
- 5. Ruby ha mkdir -p?
- 6. codice Ruby ha spiegato
- 7. Non ha Ruby isalpha?
- 8. Perché Ruby ha Numeric.new?
- 9. Operazioni atomiche in C++
- 10. Operazioni atomiche in ARM
- 11. Ha le variabili Err standard?
- 12. asp.net MVC ha variabili applicative?
- 13. CUDA Elenco delle operazioni atomiche
- 14. Ruby ha un equivalente method_missing per le variabili di istanza non definite?
- 15. Qual è la differenza tra l'uso di una primitiva volatile rispetto alle variabili atomiche?
- 16. Comunicazione multithread: quanto è buono l'uso di variabili atomiche come AtomicInteger? perché non c'è AtomicFloat?
- 17. Non possiamo usare le operazioni atomiche per variabili in virgola mobile in CUDA?
- 18. Come si inizializzano le variabili in Ruby?
- 19. Ruby: using Object.send per l'assegnazione delle variabili
- 20. variabili di swap Groovy come Ruby
- 21. Ottieni attr_accessor/variabili di istanza in ruby
- 22. operazioni atomiche per shared_ptr in C++ 11
- 23. Operazioni atomiche MySQL e blocco tabella
- 24. Perché Python non ha variabili statiche?
- 25. Ruby ha Skip (n) come C#?
- 26. Ruby ha classi di formattazione numeriche?
- 27. Le operazioni da atomic.h sembrano non atomiche
- 28. Operazioni atomiche in C su Linux
- 29. Operazioni atomiche nella memoria blu della tabella
- 30. Variabili di istanza della classe Ruby ed ereditarietà