Evet arkadaşlar, şimdi olay döngüsünün ana mantığını uygulayacağız, olay döngüsünün
iş parçacığı bu işlevi çalıştırır olay döngüsü iş parçacığı ve
olay döngüsü iş parçacığının sonsuz bir döngüde çalıştığını zaten tartışmıştık.
Olay döngüsü, görevi bir olay döngüsünün sekizindeki görevden almaya ve bu görevi dosyalamaya çalışır
ve bir görev olduğu ve görev hazır olduğu sürece bunu yapmaya devam eder.
Ayrıca, bir olay döngüsünün görevinin iki bağımsız tarafından
işletilen bir veri yapısı olduğunu da tartıştık.
Uygulama iş parçacığı ve hatta döngü iş parçacığı.
Bunun tipik bir üretici tüketici sorunu olduğunu ve uygulama iş parçacığının bir
üretici, olay döngüsü iş parçacığının ise bir tüketici olduğunu tartıştığımızı hatırlayın.
Uygulama iş parçacığı görevi üretir ve olay döngüsünde koşuşturmak için işaret verir, olay döngüsü iş
parçacığı ise görevi görev sekizinden kaldıran ve onlara ateş eden bir tüketici iş parçacığıdır.
Bu nedenle, Eddy'nin çift döngü görevindeki NQ ve BQ işlemleri aslında kritik
bölümlerdir ve bu nedenle NQ darbe karşıtı işlemler mutantları kilitleyerek korunmalıdır.
Pekala, şimdi bu işlev olay döngüsü iş parçacığına geliyoruz.
Düşen kısa ve çok fazla zamanı ve sonsuz bir döngü
içinde küçük bir iş parçacığı olan bu işlevi uygulayacaktık.
Yapacağımız şey mutantları kilitlemek olacaktı.
Sonra ilk olarak, görevden görev.
Ve şimdi eğer görev bulunamazsa, o zaman olay döngüsü tehdidimizi askıya alacaktık.
Ancak görev oluşturulmuşsa, görevi dosyalayın.
Tamam.
Ve mutantların kilidini açın ve bu beş adımı sonsuza kadar yapmaya devam edin.
Yani bu adımlar için değil.
Bunlar beş adımdır.
Bu yüzden bu beş adımı sonsuza kadar tekrarlamaya devam edin.
Bunu, tüm bu algoritmayı bir süre, bir lukwago içinde kapsülleyerek zaten başardık.
Tamam.
Dolayısıyla, bu mantığı uygulamak için, koşullandırılabilirliği nasıl kullanacağınızı
ve yeni vergileri nasıl kullanacağınızı anlamanız gerekir.
Condition değişkeni iş parçacığını askıya almak için kullanılırken, new tax bu
görev üzerinde Daegu işlemini birbirini dışlayan bir şekilde gerçekleştirmek için kullanılacaktır.
Şimdi bu işlevi iş parçacığında bile uygulayalım.
Hatırlayın, dysfunction'a aktarılan argüman hiçbir şey değildi,
ancak insan döngüsü nesnesinin kendisine bir işaretçiydi.
Ve bu sonsuz döngüdür.
Bu yüzden yapacağımız ilk şey olay döngüsü mutantlarını kilitlemektir.
Şimdi görev kesiminden göreve uyar.
Dolayısıyla, bu hayati döngüye yalnızca görev görevde bulunmadığında gireceğiz.
Ve eşcinsellere bakılması bile askıya alınmalı.
Yani bu, dosyanın en üstünde tanımladığım bir Boolean değişkeni.
Yani bu değişkenin amacı, tüm tartışma
çıktılarının ekranda görüntülenmesini isteyip istemediğimdir.
Birlik kütüphanemin iyi çalıştığından, hatasız olduğundan ve herhangi bir hata ayıklama yazdırma
uygulamasının ekrana bilgi yazdırmasını istemediğimden emin olduğumda bunu yanlış olarak ayarlayacağım.
Yani burada boş bir görev olduğu doğrulanmıştır.
Ve burada bu bakışı bile askıya alacağım, Trent.
Dolayısıyla, olay denemesini askıya almak için bir API iş parçacığını çağırmanız gerekir.
Şartlı bekleme.
Koşul değişkenine giden noktanın yanı sıra bir veya iki muteks noktasını da geçin.
Tamam.
Böylece 83 numaralı satırda, olay döngüsü üçlüsünüz askıya alınır ve olay döngüsü sırtınız 84
numaralı satırı yalnızca sistem sinyalindeki başka bir iş parçacığı olay döngünüzü tuzağa düşürdüğünde tutacaktır.
Dolayısıyla, olay döngüsü parçanız blok durumundan uyandırıldığında, görevden yeni bir
görevi tekrar almak için bu 77 numaralı satıra geri dönmelidir.
Ve eğer görev bulunamazsa, o zaman yine engellenir ve seksen üç numaralı satıra geçilir.
Tamam.
Yani loop trad bile sinyal aldığında biz buradayız.
Sinyali aldıktan sonra geri dönün, yeni görevi görevden alın, herhangi biri.
Tekrar.
Ve görevin bulunması durumunda bir silahı engellemek mi yoksa görevi ateşlemek mi istediğimize karar verin.
Şimdi burada bulunmanın ne kadar önemli olduğunu anlıyorsunuz.
Her 10 hafta bile olsa, Toskana görevinden yeni görev
olarak geri dönmeli ve Tasker hala boşsa tekrar engellenmelidir.
Aksi takdirde döngüden çıkın, bu yüzden burada 90
numaralı sırada olacağız, hatta bakın, tan uyandı ve
insan döngü ipliği önünüzdeki görevden görevle yüzleşmeyi başardı.
Yani 90 numaralı satırda Luke Thread'in bile ateşlenecek bir görevi var.
Şimdi bu muteksin görevi tamamlandı, bu yüzden bu muteksin kilidini
açabiliriz çünkü şu anda yanımızda zaten ateşlenmesi gereken bir
görev var ve bu görev zaten görevdeki görev oldu.
Eğer.
Ve şimdi görevi dosyalayacağız.
Görev bu şekilde ateşlenir ve görev ateşlendikten sonra görev belleğini boşaltabiliriz.
Pekala, tüm bunları while döngüsü içinde yapıyoruz
ve bu fonksiyonun uygulanmasıyla işimiz bitti.
Oldukça kolay.
Yani bu kadarlık kısım kritik bölümdür.
Satır 92, Satır 77'deki vurgulanan kod
parçasında Eddie adlı görevi değiştiriyoruz.
Bu nedenle, bu kod parçası muteks kilitleme ve kilit açma çağrıları arasına sıkıştırılmıştır.
Böylece olay döngüsü kütüphanemiz artık bir şekil alıyor.
Bir sonraki ders videosundan, uygulamanın olay döngüsüne ateş etmek için yeni
bir görevi nasıl işaret ettiğini göreceğiz, yani bir sonraki dersten tast
gönderimi hakkında göreceğiz ve bu işlevi uygularken çocuklar, hatta döngü denendi.
Olay döngüsünün o durumunu gerçekten güncellemeyi unuttuk, bu yüzden Luke bile iki durumda olabilir.
İkisi de olur.
Her ikisi de meşgul.
Tamam.
Öyleyse, bu işleve bir kod parçası eklememiz gerektiğini düşünebilir misiniz,
böylece olay döngüsünün durumu, olay döngüsünün bloglanmış olmasına veya
gerçekten bir görevi yürütmesine bağlı olarak doğru şekilde güncellenir.
Bu fonksiyonda Lou Pratt'in bile görevden bir görev bulamadığı
için 84 numaralı satırda bloke etmeye karar verdiğini görebilirsiniz.
Tamam.
Yani bu basitçe, bloklamadan ve hatta döngü takibinden hemen önce,
olay döngüsünün boşta kalmaya çalıştığı durumu güncellememiz gerektiği anlamına gelir.
Ve düşük gelgit bile bu while döngüsünden çıktığında,
olay döngümüz TED tetikleyecek bir görev bulmuş demektir.
Bu da 89 numaralı satırda Murdoch'ların kilidini açmadan önce
Lou adlı olayın durumunu güncellememiz gerektiği anlamına geliyor.
Çok meşgul çünkü bir sonraki adımda kuş
gribimiz başvuru ile gönderilen bir görevi ateşleyecekti.
Tamam.
Ve güncellemeyi unuttuğumuz bir şey daha olay döngüsünün bu mevcut görev üyesiydi.
Böylece 99 numaralı satırda Loop'un bile bu görevle mücadele ettiğini görebilirsiniz.
Böylece 99 numaralı satırdan hemen önce, olay döngüsünün geçerli oyuncu üyesini güncelleyebilirsiniz.
Ve olay döngüsü görevle mücadele etmeyi bitirdiğinde, geçerli
geçiş noktasını veya şu ana kadar güncelleyebilirsiniz.
Tamam.