Kavramsal olarak, her bir iş parçacığının kendi yığınını aldığı söylenirse ne anlama gelir?


10

Brian Goetz tarafından Uygulamada Java Eşzamanlılığı okuyordum ve Stack Confinement bölümünde , her iş parçacığının kendi yığını aldığından ve yerel değişkenlerin özünde yürütme iş parçacığına bağlı olduğu belirtiliyor; bunlar diğer iş parçacıkları tarafından erişilemeyen yürütme iş parçacığı yığınında bulunur. Her iş parçacığının kendi yürütme yığınına sahip olması ne anlama geliyor?


4
Bununla ilgili daha derin bir anlayış için, yığın işaretçi yazmacına ve montajda nasıl kullanıldığına bakın. Bu, iş parçacıklarının kendi yığınlarına nasıl sahip olabileceğini açıklayacaktır.
Peter Smith

1
Peter Smith ile aynı fikirde. Zaman alabilir, ancak daha sonra neyin, nasıl ve neden olduğunu tam olarak
öğrenirsiniz

Yanıtlar:


13

Hangi nedenle olursa olsun hata ayıklayıcıyı kırdığınızda biliyorsunuz ve IDE size bir yığın izi veriyor mu? Ve her yöntemin (yığın çerçevesi) hata ayıklayıcıda inceleyebileceğiniz kendi yerel değişkenleri vardır?

Bu, programınızın "yürütme yığını" dır. Programınızın yerel durumunun şu anda nasıl göründüğünü gösterir. Yazarın söylediği, her bir iş parçacığının kendi gibi farklı yürütme yığını almasıdır. Kendi çağrı yığını vardır ve yöntemlerin her birinin kendi yerel değişkenleri vardır.

Değişkenler yığınta değil, yürütme yığınının bir parçası olarak saklandığından, çalıştırılan iş parçacığına özgüdürler ve doğrudan paylaşılamazlar. Bunları kopyalayabilir veya nesnelere çeşitli yollarla referansları başka şekillerde aktarabilirsiniz, bu da çoğunlukla akademik bir ayrımdır.


Diğer iş parçacıklarına veya uzun ömürlü nesnelere maruz kalan yerel değişkenlerin artık sınırlanmayacağını belirtmek için lütfen üçüncü paragrafınıza daha da güçlü bir vurgu ekleyin . Bu nedenle, OP'nin kitabından alıntılanan iddia çok şüphelidir.
rwong

4
@rwong: Yerel bir değişkeni sorunlu bir şekilde başka bir iş parçacığına maruz bırakmak imkansızdır. Değişkenler yalnızca ilkel veya referanslar içerir. Nesneler öbek üzerinde yaşar.
Michael Borgwardt

@MichaelBorgwardt Değişken A'nın bir ilkel içerdiğini ve değişkenin B durumu olan bir başvuru içerdiğini söyleyerek iki durumu ayrı ayrı ele alalım. İlkeller değere göre geçtiğinden, yerel değişkenler gerçekten iş parçacığı açısından güvenlidir, ancak referanslar hakkında. Onlar etrafından geçilebilir mi? Neden imkansız olduğunu söylüyorsun?
Geek

2
@Geek: Değişken ve bahsettiği nesne, bu ayrıntı düzeyinde konuşurken karıştırılmaması gereken iki ayrı ve farklı şeydir. Yerel değişken farklı bir iş parçacığına maruz bırakılamaz. Nesneler kesinlikle yapabilir.
Michael Borgwardt

@MichaelBorgwardt Ne dediğini anlıyorum.Açıklama için teşekkürler.
Geek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.