Bazı arkaplanlar:
Sızıntı-kova gibi bir şey için kullanılan, go rutinleri arasında paylaşılan bir karşı değişkene ihtiyacım var. Etkin Go, eşzamanlı bölümde sızan bir kepçe örneği olduğunu biliyorum, ancak izlemem gereken numara çok büyük olabilir ve bunu izlemek için bir kanaldaki öğe sayısını kullanmanın etkisiz olduğunu hissediyorum. Bu yüzden numarayı izlemek için farklı rutinler arasında paylaşılan bir değişken kullanmayı düşünüyorum.X86'da Go atomic'te artış operatörleri mi bulunuyor?
Açık yapılandırma olmadan, tüm gidilen yordamların bir iş parçacığına eşlendiğini anlıyorum. Ancak, çok çekirdekli bir bilgisayarda programa birden fazla iş parçacığı atarsam, operatörleri atomik artırır mı? Farklı makinelerde farklı veri türleri (int32
, float32
, vb.) Için hepsi aynı mı (x86_32
, x86_64
, arm
)?
daha somut olmak gerekirse, ne başka rutin bir rutin içinde counter += 1000
ve counter -= 512
var ve iki rutinleri iki iş parçacığı çalışıyor olması bir şey olursa? İplik güvenliği konusunda endişelenmem gerekir mi? counter
'da kilitler koyayım mı?
Vay. Teşekkürler! Senkronizasyon/atomik olduğunu fark etmedim. Bu işleri daha kolay hale getirir! –