Jak mogę osiągnąć ekskluzywne pisanie, ale nie-wyłączne czytanie? Czy mogę uzyskać dostęp do settera i utworzyć zmienną volatile
? Czy to wystarczy?Jak osiągnąć ekskluzywne pisanie, ale czytanie bez wyłączności?
Odpowiedz
Spójrz na java5 jednoczesnego api:
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/locks/ReadWriteLock.html
ten osiągnie swoje wymagania, ponieważ można pozwolić kilka czytania wątku bez blokowania zamka i tylko podczas pisania.
Oto ciekawy post porównywaniu tego API z tradycyjnym synchronizowane podczas czytania: ReentrantReadWriteLock vs synchronized
Poza tym, jak powiedział w komentarzu @assylias, należy unikać blokowania, gdy nie jest to naprawdę konieczne.
Rzeczywiście, można zaufać słowa kluczowego volatile
tylko i wyłącznie, jeśli spełnione są oba warunki:
Można używać zmiennych lotnych zamiast zamków tylko pod ograniczony zestaw okoliczności. Oba poniższe kryteria muszą być spełnione dla zmiennych lotnych, aby zapewnić pożądane bezpieczeństwo gwintów:
_ Zapisane do zmiennej nie zależą od jej bieżącej wartości.
_ Zmienna nie uczestniczy w niezmiennikach z innymi zmiennymi.
W zależności od użycia może nie być konieczne stosowanie blokowania i może być wystarczająca zmienność. – assylias
- 1. Czytanie i pisanie z localStorage?
- 2. Czytanie/pisanie do podprocesu Popen()
- 3. SQLite jednoczesne czytanie i pisanie
- 4. Czytanie i pisanie XML file
- 5. Pisanie i czytanie plików Excel w C#
- 6. Czytanie i pisanie na DVD/CD - Java
- 7. Pisanie i czytanie plików w PhoneGap
- 8. Czytanie/pisanie z użyciem I2C na Linuksie
- 9. MPI IO Czytanie i pisanie Matryca cykliczna
- 10. Czytanie i pisanie na środku pliku binarnego w C/C++
- 11. wielodobieranie nie działa w trybie wyłączności
- 12. Czytanie i pisanie int do pliku binarnego w języku C++
- 13. Jak to osiągnąć bez korzystania z edytora zdjęć?
- 14. Czytanie i pisanie plików sekwencji przy użyciu Hadoop 2.0 Apis
- 15. Czytanie i pisanie Mifare Classic 1K RFID na Nexus-S
- 16. czytanie i pisanie z tablic ula z iskrą po agregacji
- 17. Czytanie/pisanie plików rozdzielanych CSV/tabulatorami w języku C#
- 18. Python dla początkujących: czytanie i pisanie do tego samego pliku
- 19. Czytanie/pisanie/drukowanie UTF-8 w C++ 11
- 20. Ekskluzywne zespołowe miasta Zbuduj wyzwalacze Obie wypalanie
- 21. Pisanie na głos, ale nie przez _Layout.cshtml
- 22. Ekskluzywne granulaty rezerwacji (ERG) na procesorach Apple
- 23. Czytanie linii z przeglądarki strumieniowej bez zużywania?
- 24. Pisanie aplikacji internetowej z "bez zaplecza"
- 25. Jak osiągnąć "media nie istnieje" jak WhatsApp?
- 26. Problem osiągnąć zakrzywioną animacja
- 27. Jak osiągnąć względną przywozu w Pythonie
- 28. jak osiągnąć efekt "produktu dwóch monad"?
- 29. Jak osiągnąć setVideoScalingMode dla wczesnych wersji Androida
- 30. Jak osiągnąć tę funkcję w C/C++
Jaką zmienną to jest? Niektóre typy mają gwarantowane zapisy atomowe. –
Czy możesz pokazać przykład kodu, który tego wymaga? W niektórych sytuacjach można po prostu oznaczyć zmienną zmienną. – assylias