2008-09-17 19 views
6

Tahminimce, sınıf değişkenleri ("sınıf var"), depolamada gerçekten geneldir (yani, tüm uygulama için bir örnek).Delphi sınıfında global veya iş parçacığı yerel depolama var mı?

Fakat durumun bu olup olmadığını veya depoda iplik olup olmadıklarını (örneğin, "threadvar" gibi) olup olmadığını merak ediyorum.

Herkes biliyor mu?

Düzenleme: "kapsamını" olarak değiştirildi (teşekkürler Barry) sonra bu aslında doğru terminoloji olduğu gibi "depolama" ve ne olduğumu etmek

cevap

7

Evet, sınıf değişkenleri global kapsamına eklenir. Threadvar'ların nasıl uygulandığına dair ayrıntılar için RTL kaynağına bir göz atın. Win32 altında her iş parçacığı, iş parçacığı oluşturma işleminde otomatik olarak ayrılmış bir bellek bloğuna sahip olabilir. Bu ekstra veri alanı, threadvarlarınızı içermek için kullanılan şeydir.

+0

Doğru olduğundan emin değilim. Sistemin nasıl çalışması gerektiğini merak ediyorum ... bu, yetkili bir "evet/hayır" cevabı gerektiren bir sorudur ve cevabın "kabul edilmesinden" önce "otorite" olmak için kaç oy almam gerektiğini merak ediyorum. Ne yapacağım.....? – Graza

+0

Daniel'ın cevabı doğru ve ben oy verdim. Sınıf varsayı bir thread değişkenine başvurarak biraz aldatmaca kullanıp kullanamayacağınızı merak ediyorum. Denemedim - ve ya da denemeyeceğim :) –

+0

@Lars - Threadvar'a yeterli bir "sınıf var" yerine bir * standart * sınıf alanının başvurduğundan şüpheleniyorum. Bir nesnenin/değişkenin ömrü, yönlendiren nesnenin bir örneğinin dışındaysa ve bir threadvar gerekliyse, bu ömür zaten sağlanmıştır, bu yüzden daha fazla hileye gerek yoktur. – Graza

9

Sınıf değişkenleri, üye görünürlüğü özelliklerine göre kapsamlandırılır ve iş parçacığı depolama değil, global depolama alanına sahiptir.

Kapsam, sözdizimsel bir kavramdır ve hangi tanımlayıcıların nerelerden göründüğü ile ilgilidir. Burada söz konusu olan değişkenin depolanmasıdır.

+0

İyi nokta - Ben bir semantik doğru değildi bir duygu vardı ... – Graza

1

Sınıf değişkenleri tıpkı sınıflar gibidir: global ve uygulama için benzersizdir.

İlgili konular