Hat Ruby atomare Variablen wie AtomicInteger
oder AtomicBoolean
in Java?Hat Ruby Atomvariablen?
Antwort
Here is a gem das könnte liefern, was Sie brauchen (gefunden linked from here). The code is clean and compact enough to quickly understand (es ist im Grunde ein Mutex, wie alle anderen vorgeschlagen haben), der Ihnen einen guten Ausgangspunkt geben sollte, wenn Sie Ihren eigenen Mutex-Wrapper schreiben möchten.
Ein leicht modifiziertes Beispiel von 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
Ich glaube nicht, dass Ruby einen hat. Es gibt jedoch eine Mutex, die Sie verwenden können, um eine nachzuahmen.
Nicht nativ, aber Sie können etwas Atomizität mit der Klasse Mutex
bekommen.
Sie könnten wahrscheinlich Ihre eigenen AtomicString
implementieren, zum Beispiel mit einer Mutex
.
anzumerken, dass Atomtypen in Bezug auf die mutexes Umsetzung beachtet werden, besiegt den Zweck der Verwendung der ‚atomaren‘ Abstraktion.
Korrekte atomare Implementierungen emittieren Code, der die Compare-and-Swap-Anweisung der CPU nutzt.
Verwenden Mutex als wie so vorgeschlagen:
i = 0
lock = Mutex.new
# Then whenever you want to modify it:
lock.synchronize do
i += 1
end
- 1. Hat Ruby keine Isalpha?
- 2. Warum hat Ruby Numeric.new?
- 3. Hat Ruby 1.9.3 Schlüsselwortargumente?
- 4. Hat PHP Ruby Gem Bundler?
- 5. Ruby hat keine konstanten Werte?
- 6. Hat Ruby eine eingebaute ... while?
- 7. Hat Ruby eine Zip-Funktion wie Python?
- 8. Hat Ruby/Rails ein Äquivalent von ++?
- 9. Hat Ruby Skip (n) wie C#?
- 10. Hat Ruby eine beliebige Anzahl von Formatierungsklassen?
- 11. Warum hat Ruby keinen eingebauten ThreadPool?
- 12. Multithread-Kommunikation: Wie gut ist die Verwendung von Atomvariablen wie AtomicInteger? Warum gibt es kein AtomicFloat?
- 13. Hat Ruby einen schrittweisen Debugger, ähnlich Perls "Perl -d"?
- 14. Wer hat Ruby mit MySQL 5.1 zu arbeiten?
- 15. Hat Ruby eine Entsprechung von Pythons verdrehtem Framework als Netzwerkabstraktionsschicht?
- 16. Hat Ruby Sequel eine Entsprechung für die SQL-Funktion "Koaleszieren"?
- 17. Hat Ruby etwas ähnliches wie Buildout oder virtualenv?
- 18. ri leer Dokumentationen hat - Ubuntu 11.10, Ruby 1.9
- 19. Hat Ruby ein Äquivalent zu TimeSpan in C#?
- 20. Ruby on Rails skip_before_action hat nicht in meiner Anwendung beeinflussen
- 21. Hat Tcl ein Äquivalent von PERL und Ruby Backtic
- 22. Ruby: DataMapper und hat n,: xyz,: bis => Ressource
- 23. Hat Ruby eine Array-Summenmethode für boolesche Werte?
- 24. Hat Ruby oder Rails eine Funktion namens getaddrinfo?
- 25. Hat der reguläre Ruby-Ausdruck in Perl einen Operator wie "! ~"?
- 26. Ruby Select-Methode in Hat viele durch Assoziation
- 27. Hat Ruby ein Konsolen-Perf-Tool wie Python?
- 28. Hat Ruby irgendwo eine Konstante für plattformübergreifendes EOL?
- 29. Ruby warten bis sich die Webseite geändert hat
- 30. Ruby on Rails - FCKEditor Absoluter Bildpfad Ruby