Az önce, halk arasında IDM olarak bilinen İnternet indirme yöneticisi gibi bir uygulamanın potansiyel olarak
iş parçacığı bariyerini bir veri yapısı olarak kullanabileceği gerçek bir dünya örneğini açıkladım.
Şimdi bir iş parçacığı senkronizasyon veri yapısı olarak iş parçacığı bariyerinin nasıl çalıştığını anlamaya çalışalım.
Böylece ekranda yeşil kutunun aslında uygulamanızı temsil ettiğini görebilirsiniz.
Birden fazla iş parçacığı çalıştıran bir uygulama veya başka bir deyişle, çok iş parçacıklı bir
uygulamadır ve buraya çift başlı bir ok yerleştirdiğimi görebilirsiniz.
Bu çift başlı ok, programınızdaki bu belirli kod satırına bir iş parçacığı bariyeri yerleştirdiğinizi
gösterir.
Diyelim ki bu kod satırı programınızdaki yüz kod satırından biri.
Doğru.
Yani 100 satırlık kodda bir iş parçacığı bariyeri yerleştirdiniz.
Uygulama kodunuza bir bariyer yerleştirmek için kullanılan bu iş parçacığı bariyer barikatını
kullanacaktık.
Şimdilik, 100 numaralı satırda bu API'yi kullanarak bir bariyer yerleştirdiğimizi anlayın.
Uygulama kodunuzda.
Şimdi her bariyerin bazı integral değerlerle başlatılması gerekiyor.
Bu değere bariyer eşiği denir.
Diyelim ki örneğimizde bu bariyeri üç değeriyle başlattık.
Şimdi bu bariyer eşiği ne anlama geliyor?
Üç değerindeki bu bariyer eşiği, bu iş parçacığı bariyerinin en fazla iki iş parçacığını engelleyeceği
ve üçüncü iş parçacığı bariyere ulaşır ulaşmaz bariyerin serbest bırakılacağı anlamına gelir.
Bariyerin bu eşik değerinin anlamı budur.
Yani genel olarak, bariyerin eşik değeri n ise, bu bariyerin bariyer noktasına
gelen n eksi bir sayıda iş parçacığını engelleyeceği anlamına gelir.
Burada 100 numaralı hat bariyer noktasıdır.
Ve iplik bariyer noktasına ulaşır ulaşmaz, bariyer serbest bırakılır.
Bariyerin serbest bırakılması, bariyer üzerinde engellenen tüm iş parçacıklarının bariyer noktasının
ötesinde yürütmelerine devam edeceği anlamına gelir.
Doğru.
Şimdi örneğimize devam edersek, bu bariyeri bariyer eşik değeri üç ile başlattığımızı
varsayalım.
Şimdi şunu varsayalım.
31 bariyer noktasına ulaşır.
Doğru.
Üçüncüsünü bariyerde engelleyeceğiz.
Benzer şekilde, bir süre sonra T2 iş parçacığı gelir ve bariyerimiz de t2 iş parçacığını bariyerde bloke
eder.
Ve bir süre sonra, diyelim ki bir iplik, T3 mutlu bir şekilde gelir ve T3 ipliği bariyer noktasına
ulaştığı anda, bariyerimiz serbest bırakılır.
T3 iş parçacığı bariyer noktasından hiç engellenmeden geçecek ve bariyerde engellenen
diğer tüm iş parçacıkları da bariyer noktasının ötesinde yürütmelerine devam edecektir.
Doğru.
İş parçacığı veri yapısı senkronizasyonu olarak iş parçacığı bariyeri bu şekilde çalışır.
Şimdi iplik bariyerleri ile ilgili bilmeniz gereken bazı terminoloji terimleri var.
İş parçacığı bariyeri serbest bırakıldığında, bir iş parçacığı bariyerinin atıldığını söyleriz.
Ya da iplik bariyerinin kaldırılmaya başlandığını söyleyebilirsiniz.
Ve bariyer üzerinde bloke olan tüm iş parçacıkları bariyer noktasının ötesinde yürütmeye
devam edene kadar tasarruf başlama durumuna devam edecektir.
Dolayısıyla, bariyerin tüm iş parçacıkları bariyer noktasının ötesinde başarılı bir
şekilde yürütülmeye devam ettiğinde, bariyerin elden çıkarılmasının tamamlandığını söyleriz.
Ya da başka bir deyişle, eğilim ve.
Yani bu, iplik bariyerinizin bu iki durum arasında kaldığı küçük bir süre olduğu anlamına
gelir.
Yani, bariyerin elden çıkarılması devam etmektedir.
Doğru.
Bu, aklınızda tutmanız gereken terminoloji terimleridir çünkü iş parçacığı
bariyerini uygularken, iş parçacığı bariyerimizin eğilim ilerleme durumumuzda olduğu durumu ele almamız gerekir Right.
Bir kez daha, örneğimizdeki başka bir iş parçacığı olan iplik.
Üç numara bariyere çarptığında, bariyerin atılması başlar ve üç numaralı iplik hiç engellenmeden
bariyer noktasının ötesine geçer.
Ve tehdit bariyeri imha aşamasına başladığında, bariyer üzerinde engellenen tüm tehditler bariyer
noktasının ötesinde yürütülmeye devam edecektir.
Ve tüm tehditler bariyer noktasının ötesinde icraatlarına devam ettiklerinde, bariyerimizin tasfiyesinin
tamamlandığını veya sona erdiğini söyleriz.
Ve tehdit bariyeri tehditleri bertaraf etme durumundayken, tehdit bariyerinin bertaraf edilmesinin
devam ettiğini söyleriz.
Bu yüzden her şeyi tekrar özetledim.
Posix API, iş parçacığı bariyerleri ile çalışmak için dahili bir destek sağlar ve böyle bir veri yapısına iş parçacığı
bariyeri denir, ancak iş parçacığı bariyerini sıfırdan nasıl uygulayacağımızı bilmiyorsak eğlenceli değildir.
Bu yüzden bu bölümde sadece muteksleri ve koşul değişkenlerini kullanarak sıfırdan iş parçacığı bariyerini
uygulayacağız ve semaforları da kullanmamız gerekip gerekmediğini göreceğiz.
İş parçacığı bariyerini kendi başınıza uyguladıktan sonra, Posix'teki iş parçacığı bariyerlerinin
dahili uygulamasını keşfetmekte özgürsünüz.
Doğru.
Ancak bir veri yapısı kullanmak eğlenceli değildir.
Asıl eğlence bunu uygulamakta yatıyor.
Ve iş parçacığı bariyerleri gibi sofistike bir veri yapısını uygulamak için mutekslerin ve koşul değişkenlerinin akıllıca kullanımı
hakkında bilgi sahibi olmayı gerektirir.
Dahili tehdit bariyerlerini kullanarak tehdit bariyerlerini kasıtlı olarak tartışmıyorum çünkü bu size iş parçacığı bariyeri
gibi bir iş parçacığı senkronizasyon veri yapısının dahili olarak nasıl çalıştığı hakkında bir fikir vermeyecektir.
Bu yüzden bir sonraki ders videosunda, veri yapılarını kullanarak iş parçacığı engellerinin nasıl temsil edileceğini tartışacağım.