Yuvalanmış dozync çağrıları oluştururken ne olur? Alt işlemler ana kapsamda mı tamamlanacak? Ana işlem başarısız olursa, bu alt işlemler tersine çevrilebilir mi? Eğer sözdizimsel iç içe bahsediyorsanYuvalı dosync çağrıları nasıl davranır?
12
A
cevap
15
ardından cevabım iç dosync
dış bir aynı iş parçacığı üzerinde çalışacak olmasına bağlıdır olduğunu. Bir dosync
blok girildiğinde kimse bu parçacığı üzerinde zaten çalışıyor edilmemiş ise Clojure ise
dosync
, başka bir dosync
içinde sözdizimsel olarak iç içe geçmiş bir konumda yer alıyorsa, ancak yeni bir iş parçacığı üzerinde başlatılacaksa, kendisine yeni bir işlem olacaktır. (umutla) ne gösteren bir örnek:
"iç" işlem:foo
baskı sonrası yeniden deneme user> (def r (ref 0))
#'user/r
user> (dosync (future (dosync (Thread/sleep 50) (println :foo) (alter r inc)))
(println :bar)
(alter r inc))
:bar
:foo
:foo
1
user> @r
2
; "dış" işlemin yeniden başlatılması gerekmez. (Bundan sonra, r
'un tarih zincirinin büyüdüğünü unutmayın, bu nedenle "büyük" dosync
formu ikinci kez değerlendirildiyse, iç dosync
tekrar denemeyecektir. kurs.)
Mark Volkmann, Clojure'un Software Transactional Memory; Bu tür ayrıntılara sağlam bir anlayış kazandırmak isteyen herkes için okumanın şiddetle tavsiye edilir.
İlgili konular
- 1. Yuvalı monadlarla bağlama nasıl kullanılır?
- 2. 'Referans' typedef nasıl davranır?
- 3. Yuvalı Gözlemle Açısal 2
- 4. Tekrarlayıcı kontrolünde Yuvalı Gridview
- 5. Yuvalı Sorgu Nasıl Yazılır Üç tabloyu Bağlama?
- 6. Elasticsearch Yuvalı çıkış kümelerinin toplaması
- 7. BASH: [] (test) uyumsuz davranır
- 8. Düğüm uygulaması davranır küresel
- 9. jQuery.ready() kendi aramasına nasıl davranır? Örnek olarak
- 10. Örnek yöntem çağrıları nasıl engellenir?
- 11. Prosedür çağrıları assembler'da nasıl çalışır?
- 12. AJAX çağrıları TWIG
- 13. saklı yordam çağrıları
- 14. Foo (& nil), foo'dan (& "proc değil") farklı davranır?
- 15. py2neo graph.merge(), Cypher MERGE'den farklı davranır mı?
- 16. Kivy: Widget, taşma gibi davranır: gizli
- 17. Node.js'de eşzamansız çağrıları sınırlama
- 18. Yazdır n çağrıları seviyeleri?
- 19. İzleme API çağrıları
- 20. DWARF bilgilerinden çağrıları çağırma
- 21. Oktavda çoklu çizim çağrıları
- 22. Rails harici veritabanı çağrıları nasıl yapılır?
- 23. Expressjs'de web servis çağrıları nasıl yapılır?
- 24. Sistem çağrıları ne zaman ve nasıl kesilir?
- 25. JQuery kullanarak AJAX çağrıları nasıl gönderilir
- 26. Kuyrukta yöntem çağrıları - herhangi bir fikir nasıl?
- 27. .NET remoting çağrıları nasıl hata ayıklanır?
- 28. Yuvalanmış jquery ertelenmiş çağrıları işleme nasıl kullanılır
- 29. gwt-rpc çağrıları nasıl gruplanır? DWR ile
- 30. Android'de çağrıları ve SMS'leri nasıl simüle edebiliriz?
Bu örnekten hoşlanıyorum. –
Neden "sözdizimsel" niteleyici? Ve sözdizimsel olarak ne anlama geliyor? Ben ortak bir lisperim ve sözcüksel olarak görünür olan değişkenlerin kapanmasında olduğu gibi "sözcüksel olarak" alışıyorum: (let ((x 42)) (lambda() x)) vs dinamik olarak (ör. Çağrı yığında bir yere bağlı)). – kennytilton