Çok az ileti dizisi içeren bir kod yazıyor (şu anda yaklaşık 512, ancak gelecekte daha da yükselebilir). İpliklerin her biri sadece az miktarda işlem gerçekleştirir, bu yüzden sisteme yerleştirilen dişlerin minimumda tutulmasını isterim.Güvenli iplik yığını boyutu?
Yığın boyutunu pthread_attr_setstacksize()
kullanarak ayarlıyorum ve izin verilen minimum yığın boyutunu PTHREAD_STACK_MIN
'dan alabilirim. Ama sorum şu: İş parçacığı yığın boyutu için PTHREAD_STACK_MIN
kullanmak güvenli midir? Ne kadar yığına ihtiyacım olduğunu hesaplamaya nasıl giderim? Hesaplamaya eklemem gereken gizli bir ek yük var mı?
Ayrıca, iş parçacığının sistem üzerindeki yükünü azaltmak için kullanabileceğim başka teknikler var mı?
Teşekkürler Matt. Sonrasında yaptığım cevaba en yakın olduğunu düşünüyorum. Birinin "tüm yerel değişkenlerin sizeof() değerini ekleyeceğini, iplik yükü için 42 bayt eklediğini ve sonra da iyi şans için% 10 ekleyeceğini" umuyordum, ancak potansiyel olarak çok daha fazla etken var gibi görünüyor. oyunda. Öncelikler için ipuçları ve askıya alma için teşekkürler. –
@ ltn100: hayır, daha çok "kodunuzu, belirli bir yığın boyutuyla, taşma algılayan bir hata ayıklama bağlamında sınayın. Daha sonra iyi şans için% 10 ekleyin" gibi. –
@ ltn100: Platformunuzda yüksek su işaret yığını kullanımını gerçekten ölçen bir hata ayıklama aracı bulabilirseniz, bu iyi bir şeydir, ancak bunu gerçekten yapmanız gereken platformlar (yığının fiziksel RAM önü olduğundan) zorunlu değildir En iyi hata ayıklama araçlarına sahip olanlar. Ve gerçekten * testlerle dolu olmalısınız. Dinamik olarak bağlandığınız kütüphanelerdeki değişiklikler veya baktıkları ortam değişkenleri veya (tam olarak) haftanın günü gibi küçük şeyler, yüksek su işaretinizi artırabilir. VLA'lardan kaçının, giriş verilerine bağlı olarak herhangi bir tekrardan kaçının. –