Czy Ruby ma zmienne atomowe, takie jak AtomicInteger
lub AtomicBoolean
w Javie?Czy Ruby ma zmienne atomowe?
Odpowiedz
Here is a gem, które mogą zapewnić to, czego potrzebujesz (znaleziono linked from here). The code is clean and compact enough to quickly understand (jest to w zasadzie Mutex, jak sugerowali wszyscy inni), co powinno dać dobry punkt wyjścia, jeśli chcesz napisać własne opakowanie Mutex.
Lekko zmodyfikowany przykład z 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
Nie sądzę, że Ruby ma jeden. Istnieje jednak jeden model, którego można naśladować.
Nie, ale można uzyskać pewną atomowość przy użyciu klasy Mutex
.
Prawdopodobnie możesz zaimplementować własny AtomicString
, na przykład używając Mutex
.
Należy zauważyć, że wprowadzenie rodzaju atomowej w zakresie muteksy celowość stosowania określenia „atomową” abstrakcji.
Odpowiednie implementacje atomowe emitują kod, który wykorzystuje instrukcje porównania i wymiany procesora.
Zastosowanie Mutex jak sugeruje tak:
i = 0
lock = Mutex.new
# Then whenever you want to modify it:
lock.synchronize do
i += 1
end
- 1. Fałsz Udostępnianie i Zmienne atomowe
- 2. Czy Haskell ma zmienne?
- 3. Czy "ConcurrentHashMap.putAll (...)" jest atomowe?
- 4. Czy + =, | =, & = itd. Atomowe?
- 5. Czy jądro atomowe ma znaczenie dla syntetyzowanego prymitywu?
- 6. Czy wyrażeń regularnych Python ma odpowiednik atomowej grupy Ruby?
- 7. Czy Ruby/Rails ma odpowiednik ++?
- 8. Czy Ruby ma mkdir -p?
- 9. Czy ciągi znaków w Ruby są zmienne?
- 10. Zmienne środowiskowe Ruby
- 11. Czy kwerenda MySQL zawierająca pod-zapytanie atomowe?
- 12. Czy Ruby ma dowolne klasy formatowania liczb?
- 13. Czy Ruby ma wbudowaną funkcję ... while?
- 14. Dlaczego Ruby ma Numeric.new?
- 15. Czy Java obsługuje zmienne zmienne?
- 16. Czy możesz interpolować zmienne ruby w obrębie css HAML?
- 17. Magic $ - poprawione zmienne w Ruby; czy jest gdzieś kompletne odniesienie?
- 18. Jak śledzić zmienne licznika w ruby, blok, dla, każdego, czy
- 19. Zmienne lokalne przed zwrotnymi instrukcjami, czy to ma znaczenie?
- 20. Operacje atomowe w C++
- 21. (U) Rozszerzenia Ruby: rb_gc_mark() i zmienne instancji
- 22. Zmienne zamiany Groovy, takie jak ruby:
- 23. Jak przekazać zmienne między klasami Ruby?
- 24. Atomowe zapisywanie do pliku na Linuksie
- 25. Jak wyświetlić zmienne lokalne w Ruby?
- 26. Bezpieczeństwo wątków: zmienne klas w języku Ruby
- 27. Statyczne zmienne lokalne dla metod w Ruby?
- 28. Jakie operacje są operacje atomowe
- 29. Jak sprawdzić, czy element DOM ma detektor zdarzeń z Ruby
- 30. Czy Ruby ma stałą wartość dla wieloplatformowego EOL?