2012-04-15 13 views
8

Bu soru, Should my Scala actors' properties be marked @volatile?'a benziyor ancak yanıtın aynı olacağından emin değil. Örneğin, çatal-birleştirici dağıtıcı yapılandırıldığında ve oyuncunun durumu @volatile ile işaretlenmemişse, aktörün durumunun önbellek hiyerarşisi aracılığıyla bir çekirdekten (veya işlemciden) çoğaltılacağı garanti edilir. çatal/işçinin iş parçacığı farklı çekirdekler (veya işlemciler) üzerinde çalışıyorsa, diğerine mi?Akka oyuncularının mülkleri @volatile işaretli mi?

P.S. JSR133'ten sonra, ön belleğin ana belleğe akıtılması için gerekli olan tek bir yazma/okuma işleminden sadece bir yazma/okuma işleminden sonra ve diğer öznitelikte (veya işlemcideki) çalışan diğer iş parçacığındaki daha önceki tüm yazışma olmayan yazıları görüyor mu? Eğer cevabınız evetse, bu cevap olabilir, çünkü iş kuyruğunun taranması bazı okumalar yapar ve FJ görevinin değişken değişkenlerinden yazılır.

cevap

4

Hayır, aktör alanlarınıza karar vermemelisiniz. Niye ya?

bir aktör bir mesaj işlenirken, iç durumunda değişiklikler yapar ve dakika sonra bir mesaj daha işlenirken bu durumu erişirse

. numaralı aktör modeliyle aynı ileti dizisinin farklı mesajlar için aynı aktörü çalıştırdığına dair herhangi bir garanti vermediğinizi fark etmeniz önemlidir.

Hepsi burada: En PS İlişkin http://doc.akka.io/docs/akka/2.0/general/jmm.html

, ne olacağını daha önce garanti almak için aynı uçucu alana okuma/yazma gerekir. "Uçucu piggybacking" hakkında bilgi edinin