¿Ruby tiene variables atómicas, como AtomicInteger
o AtomicBoolean
en Java?¿Ruby tiene variables atómicas?
Respuesta
Here is a gem que podrían proporcionarle lo que necesita (encontrado linked from here). The code is clean and compact enough to quickly understand (es básicamente un Mutex, como todos han sugerido), que debería darle un buen punto de partida si quiere escribir su propio envoltorio Mutex.
Un ejemplo ligeramente modificado a partir de 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
No creo que Ruby tenga una. Sin embargo, hay un Mutex que puede usar para imitar uno.
No nativo, pero puede obtener un poco de atomicidad con la clase Mutex
.
Probablemente podría implementar su propio AtomicString
, por ejemplo, usando un Mutex
.
Cabe señalar que la aplicación de tipos atómicos en términos de mutex en contra del propósito de la utilización de la abstracción 'atómica'.
Las implementaciones atómicas adecuadas emiten código que aprovecha las instrucciones de comparación y cambio de la CPU.
Uso objeto mutex como sugiere este modo:
i = 0
lock = Mutex.new
# Then whenever you want to modify it:
lock.synchronize do
i += 1
end
- 1. Compartir falsa y variables atómicas
- 2. ¿Ruby tiene un method_missing equivalente para variables de instancia indefinidas?
- 3. Combinación de tiendas/cargas de variables atómicas consecutivas
- 4. Variables de clase Ruby
- 5. Ruby Environment Variables
- 6. variables estáticas en ruby
- 7. ¿Ruby tiene mkdir -p?
- 8. Operaciones atómicas en Django?
- 9. función Javascript tiene subfunciones/variables
- 10. Ruby on Rails - ¿Variables globales?
- 11. Ruby instancia variables y métodos
- 12. Operaciones atómicas en ARM
- 13. operaciones atómicas en C++
- 14. ¿Por qué Ruby tiene Numeric.new?
- 15. Ruby no tiene valores constantes?
- 16. ¿Perl tiene variables dinámicas similares a PHP?
- 17. ¿Tiene LLDB variables de conveniencia ($ var)?
- 18. ¿Por qué Python no tiene variables estáticas?
- 19. Ruby: Diferencia entre Instancia y variables locales en Ruby
- 20. ¿Qué operaciones son operaciones atómicas
- 21. CUDA Lista de operaciones atómicas
- 22. Operaciones atómicas: debajo del capó
- 23. ¿Cuál es la diferencia entre usar una primitiva volátil sobre variables atómicas?
- 24. operaciones atómicas Hilo de seguridad en gcc
- 25. Ruby, Unicorn y variables de entorno
- 26. Ruby rand() no puede aceptar variables?
- 27. Cadenas de Ruby con variables incrustadas
- 28. Obtiene las variables attr_accessor/instance en ruby
- 29. Variables locales estáticas para métodos en Ruby?
- 30. Ruby: utilizando Object.send para asignar variables