‫Tekrar hoş geldiniz.
‫Bu videoda join ve is alive hakkında konuşmak istiyorum.
‫Yani join, thread'in veya thread sınıfının sahip olduğu ve kullanabileceğimiz bir yöntemdir ve sahip olduğu bir özellik olarak
‫canlıdır.
‫Şimdi burada bir iş parçacığı ya da aslında iki iş parçacığı oluşturalım ve iş parçacığı, bir işlev ve iş parçacığından
‫işleve olmak üzere iki yöntem de oluşturdum.
‫Ve yaptıkları şey sadece başladıklarını söylemek.
‫Böylece üçüncü bir fonksiyon başladı ve fonksiyona giden iplik başladı.
‫Şimdi devam edip bunu kopyalayabilir ya da çok hızlı bir şekilde kendiniz oluşturabilir ve sonra devam edebilirsiniz.
‫Bu yüzden burada sadece alan dizisinin başladığını ve sonunda ana dizinin sona erdiğini söyleyeceğim.
‫Şimdiye kadar yeni bir şey yok.
‫Örneğin bunu Kontrol beş ile başlatırsak, konsol uyanık kalır.
‫Ana konu başladı ve ana konu sona erdi.
‫Devam etmek için herhangi bir tuşa basın.
‫Tamam.
‫Gördüğünüz gibi başladı ve bitti ve bu gerçekten çok hızlı oldu.
‫Yani burada pek bir şey olmuyor.
‫Şimdi bunu değiştirelim.
‫Orada birkaç konu başlığı oluşturalım.
‫Öyleyse birinci başlık adında yeni bir başlık oluşturalım.
‫Konu bu.
‫Ve bir iş parçacığı kullanmak için sistem iş parçacığı kullanarak uygulamamız gerekir.
‫Şimdi iş parçacıklarını kullanabiliriz ve ben buna tek iş parçacığı diyeceğim.
‫Yapacağı şey basitçe thread function one ya da thread one fonksiyonunu çağıran yeni bir iş parçacığı
‫olmaktır.
‫Bu kodu burada çalıştıracak olursak, sadece metodu çağıracaktır.
‫Ve sonra, başka bir iş parçacığı, buna iş parçacığı iki diyeceğim, bu da bir iş parçacığı olacak ve burada
‫iş parçacığı çalışacak.
‫Gördüğünüz gibi, birden fazla aşırı yük thread start, parametrelendirilmiş thread start ve thread start vardır.
‫Yani yaptığımız şey sadece bu iş parçacığı başlangıcı.
‫Yani start, iş parçacığı çalışmaya başladığında çağrılacak yöntemleri temsil eden bir iş parçacığı başlatma temsilcisidir.
‫Dolayısıyla yöntemimiz bu olacak.
‫Yani bu birinci iplik veya bu üçüncü işlev, aslında bir yöntem değil, bir işlevdir çünkü
‫nesne yönelimli bir sınıf içinde değildir.
‫Ama her neyse, devam edelim ve bu fonksiyonu oluşturalım.
‫Gördüğünüz gibi, burada parantezlere ihtiyacınız yok çünkü aslında burada buna bir temsilci demiyoruz.
‫Tamam.
‫Şimdi yapmamız gereken şey, basitçe bu konuları başlatmaktır.
‫O halde bir nokta başlangıç ve bir iplik başlangıç yapalım.
‫Başlatmak için control f five tuşuna basacağım ve ana iş parçacığının başladığını, ana iş parçacığının sona erdiğini, birinci iş
‫parçacığı işlevinin başladığını ve üçüncü işlevin başladığını göreceğim.
‫Bu yüzden sona ermediler çünkü henüz herhangi bir bitiş mesajı uygulamadık.
‫Şimdi devam edelim ve bu iki iplik üzerinde birleştirme yöntemini kullanalım.
‫Öyleyse bir noktadan başlayın ve bize neyin katıldığını kontrol edelim.
‫Joint, standart com ve send message pompalama işlemlerini gerçekleştirmeye devam ederken bu örnek tarafından temsil edilen
‫kırmızı sonlanana kadar çağıran iş parçacığını engeller.
‫Yani yapacağımız şey basitçe bu iki konuyu birleştirmek veya birleştirmek.
‫Yani ana iş parçacığı ile bu iş parçacığı, bu ortak yöntemin yaptığı şey budur ve ana iş parçacığını o süre
‫için engeller.
‫Bu yüzden ana iş parçacığı tarafından çağrılır.
‫Bu yüzden ana iş parçacığını engeller.
‫Bu yüzden genellikle çağıran iş parçacığını engelleme olarak adlandırılır.
‫Ve bizim durumumuzda çağıran iş parçacığı ana iş parçacığıdır çünkü çağırdığımızda ana iş parçacığının
‫içindeyiz.
‫O zaman yapacağımız şey ikinci konuya da katılmak.
‫Bu ikisini birleştirelim ve konsola bir şeyler yazalım.
‫CW Ve diyelim ki iplik bir işlevi tamamlandı.
‫İkincisi için de aynısını yapalım.
‫Öyleyse tekrar çalıştıralım ve aslında pek bir şey olmayacak.
‫Bana bırak.
‫Konsolum uyanık kalsın diye beş numaralı kumandaya basın.
‫Ana iş parçacığı başladı, üçüncü işlev başladı.
‫Ve burada işlev için iş parçacığı olarak adlandırılmalıdır.
‫Pekala, şu anda birinci ve ikinci iş parçacığının tamamlandığını ve sonrasında yalnızca ana iş parçacığının tamamlandığını
‫söylüyor.
‫Yani bu süslü bir şey değil, yeni bir şey değil.
‫Sadece geliştirme işlemlerini adım adım yürütür.
‫İşte burada böyle görünüyor.
‫Ama o zaman ilginç bir şey yapalım.
‫Buraya bir uyku ekleyelim.
‫Yani aslında iş parçacığını 3 saniye uyutalım.
‫Yani iş parçacığı uykusu, 3000 milisaniye.
‫Ve bunun yapacağı şey, bu yöntemin sadece yöntemi söyleyeceği, iş parçacığının başladığı ve ardından
‫3 saniye bekleyeceğidir.
‫Şimdi tekrar çalıştıralım ve aslında kontrol f beş ile tekrar çalıştıralım.
‫İşte, fonksiyon, başla.
‫Ve bir süre sonra, tek bir fonksiyon.
‫Tamamdır.
‫Aslında bunu hızlıca tekrarlamama izin verin.
‫Yani üçüncüsü ve onu başlatmak için ve 3 saniye sonra, üçüncü fonksiyonun tamamlandığını, üçüncü fonksiyonun tamamlandığını ve ana iş parçacığının sona
‫erdiğini görebilirsiniz.
‫Böylece ana iş parçacığı, ana veya üçüncü iş parçacığının işi bitene kadar bekler.
‫Ve bu gerçekleşiyor çünkü biz ona burada katılıyoruz.
‫Bu yüzden birinci konuya katılıyoruz ve diyoruz ki, tamam, lütfen işimiz bitene kadar bekleyin.
‫Şimdi ortak yönteme bakarsak, dikkate alınması gereken başka ilginç şeyler de var.
‫Birden fazla aşırı yükleme vardır, bu nedenle gördüğünüz gibi, burada yalnızca bir tane veya sıfır parametre veya verdiğimiz
‫argüman var, ancak birden fazla var.
‫Bu yüzden buraya başka bir argüman ekleyebiliriz, bu da devam etmeden önce beklemek istediğimiz süredir.
‫Burada, if thread dot'u kullanacağım, aslında join'in belirli bir süreyi aldığı üçüncü iş parçacığı ve milisaniye
‫zaman aşımını görebilirsiniz.
‫Diyelim ki 1/2 bekleyeceğiz ve bu iş parçacığına sonlandırması için 1/2 vereceğiz ve
‫bunu zamanında yaparsa iş parçacığı bir işlevi tamamlandı diyeceğiz ve aksi takdirde iş parçacığı bir işlevi 1/2 içinde tamamlanmadı gibi
‫bir şey söyleyeceğiz.
‫Pekala, buradaki bağlantıdan kurtulalım ve aslında tüm bu kodu bununla değiştirelim.
‫Şimdi tekrar çalıştıralım.
‫Beşin kontrolü.
‫Yani ön işlevin üçte biri 1/2 iş parçacığı içinde yapılmadı ve ana iş parçacığı sona erdi.
‫Gördüğünüz gibi, belirtilen süre içinde yapılmadı.
‫Ama şimdi buraya başka bir kod ekleyelim çünkü bu konuyu hiç görmedik.
‫Bir işlev tamamlandı.
‫Öyleyse main'e geri dönen thread one fonksiyonu gibi bir şey ekleyelim.
‫Yani bu iş hemen hemen bitti demek.
‫Ya da belki ana değil.
‫Ama renklendirmek için beş numaralı kontrolörle tekrar çalıştıralım.
‫Bu yüzden işlevlere yönelik tehdit başladı, aslında bir kez daha OC ana tehdidinin sona erdiği gibi diyeyim ve sonra sadece o zamandan
‫sonra görüyorsunuz, bu yüzden sadece 3 saniye sonra üçüncü bir işlevin renge geri döndüğünü söyledi.
‫Yani ana tehdit zaten bitmişti ve ancak o zaman ana tehdit olan renge geri dönüldü.
‫Ancak o zaman 30. hatta ya da daha sonrasına geldi.
‫Bu yüzden main metodu ile yapıldı ve ancak o zaman buradaki kod çalıştırıldı.
‫Gördüğünüz gibi, yalnızca 1/2 için ana iş parçacığını engelledi.
‫İşi bitene kadar ana tehdidi engellemedi.
‫Yani, statik yorumlar ve birleştirilmiş pompalama yapmaya devam ederken, bu örneğin temsil ettiği iş parçacığı
‫sonlanana veya belirtilen süre geçene kadar çağıran iş parçacığını engeller.
‫Yani burada görebileceğiniz şey, tamam, ana iş parçacığı, lütfen 1/2'yi bekle diyebilirsiniz ve bu
‫olmazsa veya üçüncüsü işini bitirmezse, o zaman devam edecektir.
‫Böylece iş parçacığı ikiye katılacak ve sonra şöyle diyecek: Tamam, işim bitti, iş parçacığı
‫ana tehdidi tamamlandı ve iş parçacığı bir işlevi hala çalışıyor veya iş parçacığı bir hala çalışıyor ve hala uyuyor
‫ve kodu daha sonra çalıştırıyor.
‫Ancak burada görebileceğiniz gibi bunu zamanında yapmıyor.
‫Böylece ana konu artık beklemedi.
‫Sadece dedi ki, tamam, ben devam edeceğim, sensiz devam edeceğim.
‫Konuları birleştirmekle ilgili bir şey bu.
‫Burada nasıl çalıştığını görebilirsiniz.
‫Şimdi de bunun canlı bir mülk olup olmadığına bakalım.
‫Eğer birinci iş parçacığı canlı ise bu özellik vardır ve gördüğünüz gibi mevcut iş parçacığının yürütme durumunu gösteren
‫bir değer alır, yani iş parçacığı tamamlandı mı yoksa tamamlanmadı mı?
‫Eğer konu hala canlı ise burada yazıyor.
‫Yani bu kodun çalıştırıldığı noktada hala çalışıyorsa, bir şeyler yapın.
‫Bu yüzden birinci iş parçacığı hala bir şeyler yapıyor gibi bir şey yazacağım, yani hala kodu yürütüyor
‫ve çalıştırıyor ve aksi takdirde birinci iş parçacığı tamamlandı diyeceğim, yani CW iş parçacığı bir tamamlandı.
‫Tamam.
‫Ve tabii ki burada, şimdi dizeyi bitirmemiz gerekiyor.
‫Tekrar kontrol edelim.
‫Ve ana konu sona erdi ve aslında konsolum kapanacak.
‫Bu yüzden kontrol f beş ana iş parçacığı başlatıldı, iş parçacığı bir işlevi başlatıldı ve benzeri ile başlayayım.
‫Yani yarım saat içinde bitmedi.
‫Ardından ikinci iplik işlevi tamamlandı.
‫Yani diyor ki, tamam, artık beklemeyeceğim.
‫Ana konu.
‫O zaman ikinci iş parçacığını çalıştırır.
‫Üçüncüsü hala bir şeyler yapıyor.
‫Yani bu, birinci ipliğin hayatta olduğu, infaz edildiği ve ancak bundan sonra ana tehdidin sona erdiği anlamına gelir.
‫Yani buradaki kod yürütülür, satır 38 ve ardından renklere geri dönen birinci iş parçacığı işlevimiz çağrılır veya
‫yürütülür.
‫Tamam.
‫Yani kontrol edebileceğiniz şey bu.
‫Basitçe kontrol edebilirsiniz.
‫Tamam.
‫Tehdit canlı mı değil mi?
‫Ve buna dayanarak bir şeyler yürütebilirsiniz ve bu oldukça kullanışlıdır.
‫Şimdi diyelim ki tehdit unsurunun hala düzenli olarak bir şeyler yaptığını görmek istiyoruz.
‫Diyelim ki burada bir for döngüsü kullanıyoruz ve I eşittir sıfır I on altı I artı artı.
‫Yani bu for döngüsü içinde bu kodu çalıştırmak istiyorum.
‫Ve yapacağı şey sadece tehdidin hala bir şeyler yaptığını söylemek ve sonra diyelim
‫ki 300 milisaniye boyunca uyumak olacaktır.
‫Yani 300'e uyuyun, bu da tehdidimiz tamamlanmadan önce bunun on infazını yapacağımız anlamına geliyor.
‫Öyleyse bunu bir kez daha uygulayalım.
‫Konu bir hala yapılan, yapılan, yapılan işleri yapıyor.
‫Ve gördüğünüz gibi, tehdit uykusu 300 veya 3000 saniye ve milisaniye boyunca orada olmasına ve bu sadece 300 milisaniye
‫olmasına rağmen on kez yürütülmedi.
‫Daha sonra yaptığı şey, birden çok kez tamamlanan bir iş parçacığını yürütmektir.
‫Gördüğünüz gibi, iplik işlevinin geri geldiği yerde bir çakışma var.
‫Gördüğünüz gibi, bu for döngüsü yalnızca kısa bir süre sonra çalıştırıldı.
‫Yani sıralama şu şekilde.
‫Birinci konuya başlıyoruz.
‫Birinci konuya doğru başlıyoruz.
‫1/2 için bekledi, böylece bu 1/2 birleşimine sahip olduğumuzu görebilirsiniz, bu yüzden burada kaymamızın üç yürütmesini
‫zaten kaybediyoruz, bu da hala bir şeyler yapan bu iş parçacığının aslında burada sadece altı kez veya yedi kez yürütüldüğü anlamına geliyor.
‫Ve sonra iplik bir işlevi geri gelir çünkü başlamıştır.
‫Sonra 1/2 için bekledi.
‫O zaman hiçbir şey olmadı.
‫Ancak o zaman tüm bu güzel şeyleri yapmaya başladı.
‫Dolayısıyla, bu for döngüsü on kez çalıştırıldığı için, renk geri gelene kadar bu uykuyu birden çok kez çalıştıracaktır.
‫Ve tamamlanan bu üçüncüsü süper hızlı bir şekilde yürütüldü.
‫Yani beklemeyecek çünkü orada uyku yok.
‫Ancak bu canlıyla yapabileceğiniz şey genellikle budur.
‫Yani genel olarak kontrol edebilirsiniz, hayat bu mu?
‫Hâlâ yaşıyor mu?
‫Hala hayatta mı ve hayattayken bir şeyler yapıyor mu yoksa hayattayken başka şeyler yapıyor ve işi bittiğinde hiçbir şey yapmıyor
‫mu yoksa başka bir şey mi yapıyor?
‫Bu, Join'i kullanmanın çok temel bir örneğidir ve canlıdır ve umarım konsepti kavrayabilmişsinizdir.
‫Bir sonraki videoda görüşmek üzere.
‫Görevleri kontrol edeceğiz.