WEBVTT

00:05.510 --> 00:12.020
Az önce, halk arasında IDM olarak bilinen İnternet indirme yöneticisi gibi bir uygulamanın potansiyel olarak

00:12.050 --> 00:18.740
iş parçacığı bariyerini bir veri yapısı olarak kullanabileceği gerçek bir dünya örneğini açıkladım.

00:19.040 --> 00:24.680
Şimdi bir iş parçacığı senkronizasyon veri yapısı olarak iş parçacığı bariyerinin nasıl çalıştığını anlamaya çalışalım.

00:25.130 --> 00:30.080
Böylece ekranda yeşil kutunun aslında uygulamanızı temsil ettiğini görebilirsiniz.

00:31.370 --> 00:37.280
Birden fazla iş parçacığı çalıştıran bir uygulama veya başka bir deyişle, çok iş parçacıklı bir

00:37.670 --> 00:42.350
uygulamadır ve buraya çift başlı bir ok yerleştirdiğimi görebilirsiniz.

00:42.380 --> 00:49.490
Bu çift başlı ok, programınızdaki bu belirli kod satırına bir iş parçacığı bariyeri yerleştirdiğinizi

00:49.490 --> 00:50.900
gösterir.

00:51.060 --> 00:56.040
Diyelim ki bu kod satırı programınızdaki yüz kod satırından biri.

00:56.090 --> 00:56.930
Doğru.

00:56.930 --> 01:01.100
Yani 100 satırlık kodda bir iş parçacığı bariyeri yerleştirdiniz.

01:01.980 --> 01:08.340
Uygulama kodunuza bir bariyer yerleştirmek için kullanılan bu iş parçacığı bariyer barikatını

01:08.340 --> 01:09.480
kullanacaktık.

01:09.600 --> 01:15.730
Şimdilik, 100 numaralı satırda bu API'yi kullanarak bir bariyer yerleştirdiğimizi anlayın.

01:15.750 --> 01:17.190
Uygulama kodunuzda.

01:17.490 --> 01:21.750
Şimdi her bariyerin bazı integral değerlerle başlatılması gerekiyor.

01:21.840 --> 01:25.080
Bu değere bariyer eşiği denir.

01:25.560 --> 01:30.870
Diyelim ki örneğimizde bu bariyeri üç değeriyle başlattık.

01:30.960 --> 01:33.810
Şimdi bu bariyer eşiği ne anlama geliyor?

01:34.140 --> 01:41.610
Üç değerindeki bu bariyer eşiği, bu iş parçacığı bariyerinin en fazla iki iş parçacığını engelleyeceği

01:41.610 --> 01:49.350
ve üçüncü iş parçacığı bariyere ulaşır ulaşmaz bariyerin serbest bırakılacağı anlamına gelir.

01:49.380 --> 01:53.100
Bariyerin bu eşik değerinin anlamı budur.

01:53.340 --> 01:59.280
Yani genel olarak, bariyerin eşik değeri n ise, bu bariyerin bariyer noktasına

01:59.280 --> 02:04.690
gelen n eksi bir sayıda iş parçacığını engelleyeceği anlamına gelir.

02:04.720 --> 02:07.900
Burada 100 numaralı hat bariyer noktasıdır.

02:08.020 --> 02:14.860
Ve iplik bariyer noktasına ulaşır ulaşmaz, bariyer serbest bırakılır.

02:15.100 --> 02:21.010
Bariyerin serbest bırakılması, bariyer üzerinde engellenen tüm iş parçacıklarının bariyer noktasının

02:21.010 --> 02:24.100
ötesinde yürütmelerine devam edeceği anlamına gelir.

02:24.460 --> 02:25.210
Doğru.

02:26.530 --> 02:32.170
Şimdi örneğimize devam edersek, bu bariyeri bariyer eşik değeri üç ile başlattığımızı

02:32.170 --> 02:33.730
varsayalım.

02:33.940 --> 02:35.950
Şimdi şunu varsayalım.

02:36.580 --> 02:40.480
31 bariyer noktasına ulaşır.

02:41.280 --> 02:41.880
Doğru.

02:41.880 --> 02:45.330
Üçüncüsünü bariyerde engelleyeceğiz.

02:45.940 --> 02:53.110
Benzer şekilde, bir süre sonra T2 iş parçacığı gelir ve bariyerimiz de t2 iş parçacığını bariyerde bloke

02:53.110 --> 02:53.890
eder.

02:54.740 --> 03:02.450
Ve bir süre sonra, diyelim ki bir iplik, T3 mutlu bir şekilde gelir ve T3 ipliği bariyer noktasına

03:02.450 --> 03:06.530
ulaştığı anda, bariyerimiz serbest bırakılır.

03:06.680 --> 03:13.850
T3 iş parçacığı bariyer noktasından hiç engellenmeden geçecek ve bariyerde engellenen

03:13.880 --> 03:21.470
diğer tüm iş parçacıkları da bariyer noktasının ötesinde yürütmelerine devam edecektir.

03:21.800 --> 03:22.610
Doğru.

03:22.970 --> 03:28.430
İş parçacığı veri yapısı senkronizasyonu olarak iş parçacığı bariyeri bu şekilde çalışır.

03:28.460 --> 03:34.020
Şimdi iplik bariyerleri ile ilgili bilmeniz gereken bazı terminoloji terimleri var.

03:34.040 --> 03:40.460
İş parçacığı bariyeri serbest bırakıldığında, bir iş parçacığı bariyerinin atıldığını söyleriz.

03:42.350 --> 03:47.030
Ya da iplik bariyerinin kaldırılmaya başlandığını söyleyebilirsiniz.

03:49.740 --> 03:55.650
Ve bariyer üzerinde bloke olan tüm iş parçacıkları bariyer noktasının ötesinde yürütmeye

03:55.650 --> 04:00.660
devam edene kadar tasarruf başlama durumuna devam edecektir.

04:01.400 --> 04:06.710
Dolayısıyla, bariyerin tüm iş parçacıkları bariyer noktasının ötesinde başarılı bir

04:06.710 --> 04:12.770
şekilde yürütülmeye devam ettiğinde, bariyerin elden çıkarılmasının tamamlandığını söyleriz.

04:13.920 --> 04:16.830
Ya da başka bir deyişle, eğilim ve.

04:17.430 --> 04:25.080
Yani bu, iplik bariyerinizin bu iki durum arasında kaldığı küçük bir süre olduğu anlamına

04:25.080 --> 04:26.070
gelir.

04:26.280 --> 04:30.060
Yani, bariyerin elden çıkarılması devam etmektedir.

04:32.170 --> 04:32.770
Doğru.

04:32.770 --> 04:37.650
Bu, aklınızda tutmanız gereken terminoloji terimleridir çünkü iş parçacığı

04:37.660 --> 04:46.720
bariyerini uygularken, iş parçacığı bariyerimizin eğilim ilerleme durumumuzda olduğu durumu ele almamız gerekir Right.

04:47.990 --> 04:52.490
Bir kez daha, örneğimizdeki başka bir iş parçacığı olan iplik.

04:52.490 --> 05:00.500
Üç numara bariyere çarptığında, bariyerin atılması başlar ve üç numaralı iplik hiç engellenmeden

05:00.500 --> 05:03.710
bariyer noktasının ötesine geçer.

05:04.620 --> 05:10.710
Ve tehdit bariyeri imha aşamasına başladığında, bariyer üzerinde engellenen tüm tehditler bariyer

05:10.710 --> 05:14.550
noktasının ötesinde yürütülmeye devam edecektir.

05:15.030 --> 05:22.620
Ve tüm tehditler bariyer noktasının ötesinde icraatlarına devam ettiklerinde, bariyerimizin tasfiyesinin

05:22.620 --> 05:25.920
tamamlandığını veya sona erdiğini söyleriz.

05:28.230 --> 05:35.040
Ve tehdit bariyeri tehditleri bertaraf etme durumundayken, tehdit bariyerinin bertaraf edilmesinin

05:35.040 --> 05:37.520
devam ettiğini söyleriz.

05:37.530 --> 05:40.140
Bu yüzden her şeyi tekrar özetledim.

05:41.630 --> 05:47.630
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ığı

05:47.990 --> 05:54.410
bariyeri denir, ancak iş parçacığı bariyerini sıfırdan nasıl uygulayacağımızı bilmiyorsak eğlenceli değildir.

05:54.410 --> 06:00.350
Bu yüzden bu bölümde sadece muteksleri ve koşul değişkenlerini kullanarak sıfırdan iş parçacığı bariyerini

06:00.350 --> 06:05.750
uygulayacağız ve semaforları da kullanmamız gerekip gerekmediğini göreceğiz.

06:05.750 --> 06:11.570
İş parçacığı bariyerini kendi başınıza uyguladıktan sonra, Posix'teki iş parçacığı bariyerlerinin

06:11.570 --> 06:14.600
dahili uygulamasını keşfetmekte özgürsünüz.

06:14.780 --> 06:15.590
Doğru.

06:18.250 --> 06:20.590
Ancak bir veri yapısı kullanmak eğlenceli değildir.

06:20.620 --> 06:23.290
Asıl eğlence bunu uygulamakta yatıyor.

06:23.560 --> 06:29.620
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ı

06:29.620 --> 06:31.900
hakkında bilgi sahibi olmayı gerektirir.

06:32.980 --> 06:40.420
Dahili tehdit bariyerlerini kullanarak tehdit bariyerlerini kasıtlı olarak tartışmıyorum çünkü bu size iş parçacığı bariyeri

06:40.420 --> 06:47.740
gibi bir iş parçacığı senkronizasyon veri yapısının dahili olarak nasıl çalıştığı hakkında bir fikir vermeyecektir.

06:49.020 --> 06:55.350
Bu yüzden bir sonraki ders videosunda, veri yapılarını kullanarak iş parçacığı engellerinin nasıl temsil edileceğini tartışacağım.
