WEBVTT

00:05.180 --> 00:07.700
Evet çocuklar, şimdi de bunu tartışalım.

00:07.700 --> 00:13.820
Alt birleştirilebilir iş parçacığı sonlandırıldığında, katılabileceği diğer tüm iş parçacıkları hangileridir?

00:13.850 --> 00:19.730
Çocuk iş parçacığının sonlandırıldığında katılabileceği her zaman ana iş parçacığı mıdır yoksa başka herhangi bir iş parçacığına

00:19.730 --> 00:20.750
da katılabilir mi?

00:21.110 --> 00:23.930
Yani fesih üzerine katılabilir bir alt iş parçacığı.

00:23.930 --> 00:29.420
P iş parçacığı alt çizgi birleştirme API'sinde gerçekten engellenmiş olan tüm iş parçacıklarını birleştirin.

00:29.450 --> 00:35.540
Daha sonra tüm bu iş parçacıklarının bu alt Joinable iş parçacığının sonlandırılmasını beklediği söylenir.

00:35.570 --> 00:38.770
Şimdi bu noktayı bir örnek yardımıyla anlayalım.

00:38.780 --> 00:44.420
Diyelim ki çok iş parçacıklı programınızda her zamanki gibi ana iş parçacığı olarak adlandırılan bir

00:44.450 --> 00:45.650
iş parçacığınız var.

00:45.800 --> 00:50.390
Bu ana iş parçacığının bir çocuk birleştirilebilir iş parçacığı oluşturduğunu varsayalım.

00:50.390 --> 00:51.110
Değil mi?

00:51.110 --> 00:53.300
Ve F çatal noktasıdır.

00:53.420 --> 01:00.170
Şimdi bu alt iş parçacığının başka bir iş parçacığı oluşturduğunu varsayalım ve bu başka iş parçacığını torun iş

01:00.170 --> 01:02.270
parçacığı olarak adlandıralım.

01:02.270 --> 01:03.050
Doğru.

01:03.350 --> 01:09.210
Böylece f çatal noktasından sonraki ana iş parçacığı kendi yürütme akışını yürütmeye devam edecektir.

01:09.240 --> 01:16.560
Çocuk iş parçacığı da F çatal noktasından sonra kendi yürütme akışına devam eder ve torun iş parçacığı

01:16.560 --> 01:18.420
da aynı şeyi yapar.

01:18.420 --> 01:19.110
Doğru.

01:20.830 --> 01:29.500
Şimdi torun iş parçacığının bir API iş parçacığını çağırdığını ve bu torun iş parçacığının da bir API iş parçacığını çağırdığını

01:29.500 --> 01:31.330
varsayalım.

01:31.330 --> 01:34.690
Alt iş parçacığının tutamacındaki alt çizgi birleşimi.

01:34.720 --> 01:35.500
Doğru.

01:35.530 --> 01:37.240
P iplik sapı nedir?

01:37.270 --> 01:42.070
P thread handle, şu anda kodumuzda kullandığımız bu veri yapısından başka bir şey değildir.

01:42.070 --> 01:42.850
Doğru.

01:43.000 --> 01:48.760
Yani şimdi torun iş parçacığı çocuk iş parçacığının sonlandırılmasını veya ölümünü bekliyor.

01:48.790 --> 01:55.030
Benzer şekilde, ana iş parçacığı da alt iş parçacığının tanıtıcısında bir api p iş parçacığı alt çizgi birleştirme çağrısı

01:55.030 --> 01:55.990
yapmıştır.

01:56.020 --> 02:01.530
Yani bu, ana iş parçacığının da alt iş parçacığının sonlandırılmasını beklediği anlamına gelir.

02:01.540 --> 02:02.170
Doğru.

02:02.170 --> 02:06.490
Şimdi J1 ve J2 olmak üzere iki birleşme noktası olduğunu görebilirsiniz.

02:06.880 --> 02:13.750
Şimdi daha ileri giderek, alt iş parçacığının işini tamamladığını ve sonlandığını varsayalım.

02:13.990 --> 02:20.520
Bu nedenle, alt iş parçacığı sonlandırılır sonlandırılmaz, tutamacını bekleyen birleştirme işlemine gidecektir.

02:20.540 --> 02:25.310
Yani bu durumda hem ana iş parçacığı hem de torun iş parçacığıdır.

02:25.310 --> 02:26.120
Değil mi?

02:26.510 --> 02:33.620
Böylece alt iş parçacığı sonlanır sonlanmaz, üst iş parçacığının yanı sıra torun iş parçacığına da bir sinyal gönderilecek

02:33.650 --> 02:40.100
ve üst ve torun iş parçacığı birleşme noktalarının ötesinde yürütmeye devam edecektir.

02:40.130 --> 02:40.940
Doğru.

02:42.290 --> 02:50.270
Bu durumda, herhangi bir iş parçacığının diğer herhangi bir iş parçacığı için P iş parçacığı birleştirme API'sini çağırabileceğini görebilirsiniz.

02:50.270 --> 02:56.120
Ve alt iş parçacığının sonlandırılmasını bekleyebilecek olan sadece üst iş parçacığı değildir.

02:56.570 --> 03:02.270
Herhangi bir iş parçacığı sistemdeki diğer birleştirilebilir iş parçacıklarının sonlandırılmasını bekleyebilir.

03:02.270 --> 03:05.630
Tam burada, sistem içinde, süreç içinde demektir.

03:06.210 --> 03:13.140
Bu örnekte, büyük çocuğun aslında ana iş parçacığının sonlandırılmasını beklediğini görebilirsiniz,

03:13.140 --> 03:16.320
bu da C Right alt iş parçacığıdır.

03:16.680 --> 03:20.520
Dolayısıyla, iş parçacığının sonlandırılmasını beklemek herhangi bir sırada gerçekleşebilir.

03:20.550 --> 03:27.450
Ebeveyn çocuğu bekleyebilir, çocuk ebeveyni bekleyebilir veya herhangi bir iş parçacığı başka bir iş parçacığını bekleyebilir.

03:27.480 --> 03:29.160
Herhangi bir kısıtlama yoktur.

03:29.920 --> 03:36.370
Aklınızda tutmanız gereken tek şey, tehdidin yalnızca birleştirilebilir bir iş parçacığının sonlandırılmasını

03:36.370 --> 03:38.230
beklemesi gerektiğidir.

03:38.680 --> 03:43.660
Bir iş parçacığı, ayrılmış bir iş parçacığına katılmak için ayrılmış iş parçacığını beklememelidir.

03:43.690 --> 03:46.990
Birleşme noktasında asla başka bir konuya katılmayın.
