‫Tekrar hoş geldiniz.
‫Bu videoda tehdit havuzlarını inceleyeceğiz.
‫Bu nedenle, birden fazla iş parçacığı oluşturacağız ve neler olacağını göreceğiz.
‫Bu nedenle, öncelikle çok basit bir iş parçacığı oluşturmaya devam edelim ve bu tamamlama
‫kaynağı şeylerinden kurtulacağım.
‫Dolayısıyla burada çok genel bir konudan bahsediyoruz.
‫Bu şimdiye kadar kullandığımız genel bir başlık.
‫Ve burada örneğin 1/2'yi bekliyoruz ve bunun bir iş parçacığı numarası var ve bunu başlatmak için elbette
‫burada sona doğru start yöntemini çağırmamız gerekiyor.
‫Şimdi bu sadece bir konu başlığı olacak ve başlayacak.
‫Yani burada yeni bir şey yok.
‫Bunu orada birçok kez yaptık.
‫Tek fark, şimdi iş parçacığı havuzu adı verilen bir şey kullanmak istiyorum,
‫ancak bunu yapmadan önce, her ikisi de bunun gibi bir numaralandırılabilir sayı kullanacağım
‫ve şimdilik listelemek için sıfırdan 100'e kadar bir aralık çalıştıracağım ve her giriş için bir şey yapmak istiyorum.
‫Bu yüzden sadece belirli bir kodu çalıştırın diyeceğim.
‫Yani bu sadece bir satırlık bir kod.
‫Ve orada konu başlıkları oluşturmak istiyorum.
‫Yani yapacağı şey bu I enumerable veya bu enumerable, aslında birden fazla iş parçacığı oluşturacak
‫ve bunlardan 100 tane oluşturacak.
‫Bu yüzden burada bir link kullanacağım.
‫Bu nedenle, enumerable'ı kullanmak için sistem bağlantısını kullanarak ve sonunda E ile range olarak adlandırılmalıdır.
‫İşte buradayız.
‫Böylece basitçe 100 iş parçacığı oluşturacak ve bu iş parçacıklarının tümünü konsolda göreceğiz.
‫Öyleyse bununla başlayalım.
‫Ve işte buradayız.
‫Ve gördüğünüz gibi, konuları başlatıyor ve konuları bitiriyor.
‫Ve 102 son konu.
‫Ve gördüğünüz gibi, üç kişiyle başladı.
‫Yani üç, altı, beş ve benzeri şekilde başlar.
‫Gördüğünüz gibi düzen, beklediğimizden çok farklı.
‫Dolayısıyla, iş parçacıkları, olmalarını beklediğimiz sıradan farklı bir kimliğe sahipler, ancak daha sonra başlatılıp
‫sonlandırılıyorlar ve belki de bu biraz fazla hızlıydı.
‫O halde biraz daha iplik oluşturalım.
‫Diyelim ki 1000 iş parçacığı ve gördüğünüz gibi tonlarca iş parçacığı oluşturuyor, ancak iş parçacıkları diğerleri başlatılmadan önce sonlandırılıyor.
‫Yani bu numaralandırılabilir onları başlatır ya da olabildiğince çabuk, olabildiğince çabuk yaratır.
‫Ama gördüğünüz gibi biraz zaman alıyor.
‫Diyelim ki bir iş parçacığı oluşturmak için kabaca 100 milisaniye kadar bir süre var, bunları oluşturuyor ve sonra bitirmeye
‫başlıyor.
‫Yani 1/2'den sonra sadece beşinci iplik altı iplik oluşturdu.
‫Böylece ilklerden biri sona erdi.
‫Gördüğünüz gibi, bu iş parçacıklarını yaratıyor ve bu çok verimli değil çünkü bu iş parçacıklarını kontrol edemiyoruz, bu iş parçacıklarının
‫miktarını kontrol edemiyoruz.
‫Bu da ipliklerin çok önemli bir yönüdür ve ipliklerle çalışırken çok ama çok dikkatli ve hassas olmanız
‫gerekir.
‫Bu iplikle ne yapmak istediğinizi ve neden orada olduğunu ve genel olarak iplik içindeki her şeyle nasıl çalışacağınızı
‫bilmeniz gerekir.
‫Bu sadece iş parçacıklarına bir örnek, bunlardan nasıl birden fazla oluşturabilirsiniz ve bunun gibi 1000 iş parçacığı
‫oluşturdu.
‫Şimdi iş parçacığı havuzlarına bir göz atalım, çünkü iş parçacığı havuzları iş parçacıklarını
‫kullanmada biraz farklı bir yaklaşımdır ve biraz daha güvenlidir, diyelim, çünkü gerekli olmayan 1000 iş parçacığı oluşturmazlar.
‫Yalnızca şu anda gerekli olan dişlere sahiptir.
‫Burada bir iş parçacığı havuzu oluşturalım ve kullanıcı iş öğesi Q A yöntemini yürütme için sıraya alalım.
‫Yöntem, bir iş parçacığı havuzu iş parçacığı kullanılabilir olduğunda yürütülür, bu nedenle yalnızca kullanılabilir
‫olduğunda bu yürütülür ve burada bir nesneye ihtiyaç duyar.
‫Yani burada iki farklı durum var.
‫Geri arama ve nesneyi görüyorsunuz ve ben buna bir nesne gibi bir oh vereceğim.
‫Burada özel bir şey yok ve iplik havuzunda uygulayacağım şey diyeceğim.
‫Bu yüzden bana başlığın ID'sini ya da başlık numarasını ve diyelim ki ne zaman başlayıp ne zaman bittiğini
‫söyleyin.
‫Yani bu iplik havuzuyla yapmak istediğim hemen hemen her şey bu kadar.
‫Burada da görebileceğiniz gibi, özel olarak iş parçacığı oluşturmuyoruz, iş parçacığı havuzu
‫bunu bizim için yapacak.
‫Yani yapılacak 1000 iş parçacığı gibi pek çok iş var.
‫Ve gördüğünüz gibi, yalnızca belirli miktarda iplik oluşturuyor.
‫Ve gördüğünüz gibi, konuları aşağı yukarı aynı anda başlatıyor ve bitiriyor.
‫Ayrıca burada CPU'mda çok fazla çekirdek olmadığını da görebilirsiniz çünkü aynı anda yalnızca belirli sayıda iş parçacığı
‫ile çalışabilir.
‫Böylece iş parçacığı havuzu, gördüğünüz gibi işleri çok daha sorunsuz halledecektir.
‫Ancak elbette bu 1000 konunun tamamını incelemek çok zaman alıyor.
‫Ancak dediğim gibi, tehdit kullanıyorsanız, onları kontrol etmeniz gerekir.
‫Bu yüzden rastgele tehditler kullanmayın.
‫Tehditleri kullanacağınız ana şey, arka planda bir şey yaptığınız ve ön planda bir şey
‫yaptığınız zamandır.
‫Yani ön planda genellikle kullanıcı arayüzü gibi bir şey vardır.
‫WPF kullandığınızda veya Xamarin ile uygulama kullandığınızda ya da Xamarin ile uygulama oluşturduğunuzda, ön
‫uçta, yani kullanıcı arayüzünde gerçekleşen her şey ana iş parçacığı ve ardından veya kullanıcı arayüzü iş parçacığı
‫tarafından yapılır ve ardından video indirme veya genel olarak internetten veri indirme veya sabit
‫sürücüden veya SD karttan verilere erişme gibi her şey yapılır.
‫Bu biraz zaman alabilir.
‫Sadece birkaç milisaniye ya da birkaç milisaniye değil, birkaç milisaniye olsa bile, bu zaten arka
‫planda yapılması gereken bir şeydir, çünkü aksi takdirde kullanıcı arayüzünüz donacaktır çünkü iş parçacıklarının
‫tümü meşgul olduğu için bir şey yapmaya hazır değildir.
‫Tamam.
‫Bu, iş parçacığı havuzları oluşturmakla ilgilidir.
‫Yapacak çok işiniz varsa iş parçacığı havuzlarını kullanabilirsiniz.
‫Dolayısıyla, tehdit havuzlarını kullanırken göz önünde bulundurulması gereken birkaç husus vardır.
‫Genel olarak tehdit havuzları belirli işleri yürütmek veya belirli işleri veya iş öğelerini yapmak için vardır ve bir sonraki tehdide başlamadan
‫veya bir sonraki iş öğesine başlamadan önce bir sonraki iş parçacığı hazır olana veya bir iş parçacığının
‫işi bitene kadar beklerler.
‫Tehdit havuzlarının avantajı da budur; hiçbir şeyin olmadığı boş zamanları ya da uyku zamanları yoktur.
‫Hemen hemen öyle çünkü CPU'nuzla veya CPU'nuz tarafından hiçbir şey yapılmaması gereken durumlar
‫olabilir.
‫Ve bu tamamen iyi çünkü aksi takdirde sürekli çalışması ve sürekli bir şeyler yapması veya ağır işler yapması
‫gerekirse CPU'ya oldukça ağır gelecektir.
‫Ancak genel olarak bu tehdit havuzu basitçe şunu söyler: Tamam, eğer hiçbir şey yoksa ya da bir iş parçacığını çalıştırmam
‫ya da yeni bir iş parçacığı oluşturmam için yeterli alan varsa, bunu yapacağım ve yapılması gereken şeyleri
‫yürüteceğim.
‫Bu arada, yönetilen iş parçacığı havuzundaki iş parçacıkları, orada bulunan arka plan iş parçacıklarıdır.
‫Konu arka plandadır, özellik doğrudur.
‫Yani bunu daha önce görmemiştik.
‫Ancak bu şekilde bir başlık oluşturursam, bu yeni başlığı buradan alayım.
‫Ve eğer bunu arka plana atmak istersem, bunu yapabilirim.
‫Örneğin arka plan eşittir doğrudur.
‫Böylece bu konuyu sizin geçmişinize göre ayarlayabilirim.
‫Ve bu iş parçacığı havuzu kuyruğundaki sırada yalnızca arka plan iş parçacıkları vardır.
‫Dikkate alınması gereken bir diğer nokta da tehdit havuzunun bir tehdidi yeniden kullanmasıdır, burada gördüğümüz gibi.
‫Yani gördüğümüz tehdit kimliğini yeniden kullanır.
‫Doğru.
‫Bu tehdit kimliği yönetti, çok fazla kullanıldı.
‫Bu durumda tehdit havuzu, tehdit yerel depolama alanındaki verileri temizlemez.
‫Bu nedenle, bir yöntem tehdit yerel depolama alanını incelediğinde, bulduğu değerler tehdit havuzu tehdidinin daha önceki
‫bir kullanımından kalmış olabilir.
‫Yani bu, göz önünde bulundurmanız gereken bir şey.
‫Genel olarak tehdit havuzları hakkında daha fazla bilgi edinebileceğiniz bir bağlantı paylaşacağım.