hepsi uzun hariç \ birkaç parçacığı yazma okuma olduğu doğru mudur ve çift atom operasyonlardır ve sadece uzun olan uçucu kullanmak ve çift yüklememiz gerekiyor nelerdir operasyonlar?
cevap
JLS'nin this section numaralı telefonuna atıfta bulunduğunuz anlamına gelir. Tüm ilkel türler için garanti edilir - double
ve long
- tüm threadlar bu değişkene gerçekten yazılan değerini görecektir. (double
ve long
ile, ilk dört bayt bir iş parçacığı tarafından yazılmış olabilir ve son dört bayt JLS'nin bu bölümünde belirtildiği gibi başka bir iş parçacığı tarafından yazılmıştır.) Ancak, her ikisi de aynı değerine sahip değildir. Değişken volatile
işaretli değilse aynı zaman. Bir okuma ve yazma işlevi gören x = x + 3
, ve okuma ve yazma arasındaki x
yazar olabilir, çünkü bile volatile
kullanılarak
, x += 3
, atom değildir. Bu yüzden AtomicInteger
ve java.util.concurrent
gibi diğer yardımcı programlarımız var.
Bu doğru gelmiyor.
Atomik işlem, tüm iş parçacıklarını, bir başka iş parçacığı bitinceye kadar kaynağa erişmek için beklemeye zorlayan bir işlemdir. Diğer veri türlerinin neden atomik ve diğerleri olmadığını anlamıyorum.
Atomik parçayı güvenli bir şekilde karıştırmayın. Uzun ve çift yazarlar altta atomik değildir, çünkü her biri iki ayrı 32 bitlik depolardır. Uzun/çift olmayan alanların depolanması ve yüklenmesi, bunların bir bileşik yazma (örneğin, i++
) olmadığı varsayılarak mükemmel bir şekilde atomiktir.
Atomik olarak, farklı nesneler aynı alana yazılan birçok iş parçacığının sonucu olarak bozuk nesneler okumayacağınız anlamına gelir. Java Concurrency In Practice 3.1.2
itibaren
Out-of-ince aire güvenliği: Bir iplik senkronizasyon olmadan bir değişken okuduğunda, bayat değerini görebilirsiniz, ama en azından bir değerini gördüğü aslında orada bazı rastgele değer yerine bir iplik tarafından yerleştirildi. Bu, değişken olmayan 64 bit uzun ve çift hariç tüm değişkenler için geçerlidir. JVM, 64-bit 'u okutmak veya atomik olmayan iki ayrı 32-bit işlem olarak yazmak için izinlidir. Uçucu
atomik
o
- 1. x86 128 bit atomik işlemler
- 2. JavaScript'te atomik işlemler nasıl yapılır (Concurrency modeli)?
- 3. OpenMP atomik?
- 4. CSG işlemler
- 5. C++ 11 Atomik olmayan değişkenler içeren atomik bellek sırası
- 6. data.frame'in atomik vektöre dönüştürülmesi
- 7. Geri Alma Flask'taki testler arasındaki işlemler arasındaki işlemler
- 8. Aritmetik işlemler içindeki şablonlar
- 9. MySQL'deki İşlemler - Geri Dönülemiyor
- 10. RAILS 3 - Denetleyicilerindeki işlemler
- 11. İşlemler dosyaya yazılmıyor mu?
- 12. Meteor işlemsel işlemler
- 13. Lua'da işlemler arası iletişim
- 14. Clojure koleksiyonları üzerindeki işlemler
- 15. Farklı işlemler arasındaki verim
- 16. Android Canvas'da Kompozit İşlemler
- 17. IDocumentSession.SaveChanges() vs İşlemler
- 18. Provalarda ilkel işlemler
- 19. std :: atomik destek g ++ 4.4.3
- 20. Django'da bir sayacın atomik artışı
- 21. C++ işaretçi atama atomik midir?
- 22. Cuda işlemleri atomik olarak gerçekleştirir
- 23. String s = "foobar" atomik mi?
- 24. Java işaretçisi atomik mi yazıyor?
- 25. Bir kilit (diş) atomik midir?
- 26. Android Wear Özel Sesli İşlemler
- 27. Tüm asenkron işlemler nasıl beklenir?
- 28. Tüm "toplu" işlemler DDD'ye aittir?
- 29. iCal ile ilgili işlemler iCal
- 30. İlk işlem; taahhüt iki işlemler
bir kaynak var mı başka konu hemen güncellenmesi değerini görebilirsiniz (ve dışarı optimize edilemez) gelir sadece değerini yazma dışındaki anlambilim içeriyor bunun için? – paislee