‫Tekrar hoş geldiniz.
‫Bu videoda, iş parçacıklarına bakacağız ve bu nedenle, bir iş parçacığının nasıl oluşturulacağını ve birden fazla iş parçacığının
‫nasıl oluşturulacağını göreceğiniz çok temel iş parçacığı kavramını yapacağız.
‫Öyleyse konsol sağ hattını belirli bir şekilde kullanarak başlayalım.
‫Bu yüzden birden fazla dünya yaratacağım, örneğin dört tane ve Merhaba Dünya
‫bir, merhaba dünya iki, üç ve dört diyeceğim.
‫Yani bu dünyaları çalıştırırsak, elbette öncelikle konsolun açık ve uyanık kalması için konsol kırmızı çizgisine
‫ihtiyacımız var.
‫Eğer onları çalıştırırsak, ne olacağı çok basit.
‫Yani ekrana sadece dört kez Merhaba Dünya yazdıracaklar.
‫Ve sonra biz Merhaba Dünya'yız.
‫Bir, iki, üç ve dört.
‫Pekala, bu yeni bir şey değil.
‫Bunu daha önce çok gördük ama thread diye bir şey var, thread diye bir sınıf var.
‫Ve eğer bunu kullanmak istiyorsak, threading isim alanını kullanmamız gerekir.
‫Yani sistem nokta ipliğini kullanıyor ve hepsi bu.
‫Artık iş parçacıklarını kullanabiliriz.
‫Bu yüzden devam edip thread sınıfını kullanabilirim ve gördüğünüz gibi bir thread oluşturup kontrol edebilir, önceliğini ayarlayabilir
‫ve durumunu öğrenebilirim.
‫Şimdi yapabileceğimiz şey, örneğin, thread dot sleep'i sınırlı bir süre için kullanmaktır, yani diyelim
‫ki 1000 milisaniye için.
‫Böylece tüm programımızı ya da iş parçacığımızı, bu durumda ana iş parçacığını ya da helloworld
‫one ekrana yazdırıldıktan sonra 1/2 için olan iş parçacığını duraklatacaktır ve aslında bunu her bir ifadeden
‫sonra yapabiliriz.
‫Bu yüzden sadece belirli bir süre uyuyun ve sonra biz varız diyeceğim.
‫Merhaba dünya bir, iki, üç ve dört.
‫Yani içine tıklarsam duruyor.
‫Ancak genellikle 1/2 beklediğini ve o saniyeden sonra bir sonraki şeyi yazdırdığını görebilirsiniz.
‫Yani basitçe yaptığı şey tüm konuyu gerçekten durduruyor.
‫Böylece geçerli iş parçacığını belirli veya belirtilen sayıda milisaniye için askıya alır.
‫Yani bu, belirli bir süre sonra bir şey yapmak istiyorsanız yapabileceğiniz bir şeydir.
‫Ancak bunun gerçekten ana konuyu durdurduğunun farkında olun.
‫Yani yapılması gereken hiçbir şey, diyelim ki UI iş parçacığında yapılamaz.
‫Burada UI kullanmıyoruz, bu durumda bir konsol uygulaması kullanıyoruz.
‫Ancak, örneğin bir kullanıcı arayüzüne sahip olmak için WPF kullanırsanız ve ana iş parçacığını 1/2 için duraklatırsanız, bu, kullanıcı
‫arayüzünün bir saniye boyunca yanıt vermeyeceği anlamına gelir ve bu, kullanıcının istemediği bir şeydir ve yapmamanız
‫gereken çok kötü bir davranış olacaktır.
‫Ancak bu genellikle buradaki konularla neler yapabileceğinizi anlamanız içindir, değil mi?
‫Yani belirli bir süre için tehdit oluşturabilirsiniz.
‫Ancak sadece bir iplik kullanıyoruz.
‫Bu ana iş parçacığıdır ve hakkında daha fazla bilgi edinmek istiyorsanız, hata ayıklamanız gerekir.
‫Bunu yapmak için de buraya bir nokta ekliyoruz.
‫Yani sadece sol taraftaki çubuğa bastığınız bir hata ayıklama noktası, diyelim ki dokuzuncu satırda, ana yöntemin
‫başladığı yerde.
‫Sonra programı başlatırsınız ve gördüğünüz gibi hiçbir şey görüntülenmez çünkü tam burada duraklar.
‫Yani şu anda bulunduğumuz yer, imleç bu.
‫Şimdi görevleri görmek için Windows'ta hata ayıklamaya gitmemiz ve ardından burada iş parçacıklarını seçmemiz gerekiyor.
‫Ya da control alt h tuşuna basabilirsiniz.
‫Bu yüzden konuları açacağım ve gördüğünüz gibi şimdi benim için yüzüyorlar ve onları
‫tam burada sol tarafta konumlandıracağım.
‫Ve şimdi çalışan iş parçacıklarını görebilirsiniz ve bizim durumumuzda sadece ana iş parçacığını görüyoruz.
‫Yani yalnızca bir iş parçacığı vardır ve yönetilen kimliği sıfırdır.
‫Bu bizim ana iş parçacığımızdır ve genellikle ana yöntemimizdeki her şeyi yapar.
‫Yani bir sonraki adıma geçersem.
‫Gördüğünüz gibi hala ana iş parçacığındayız ve 1/2'yi bekliyoruz.
‫Dünyayı aslında nasıl açtığımızı görüyoruz.
‫Görebilirsin.
‫Şimdi üçüncü dünyanın hikayesi.
‫Yarım saat uyuyoruz ve sonra bir sonraki adıma geçmemiz için bizi bekliyor.
‫Böylece bir sonraki adıma geçmek için F on tuşuna basabilirsiniz ve ardından sadece bir saniye sonra hello world görüntülenir.
‫Evet, öyleyiz.
‫Merhaba Dünya 4.
‫Ve sonra bu kırmızı çizgi ortaya çıkıyor.
‫Şimdi enter gibi bir tuşa basacağım ve bir sonraki adıma geçeceğim.
‫Ve gördüğünüz gibi, hala ana başlıktayız.
‫Ve programımız kapanıyor, yani artık konu yok.
‫Bu iyi bir şey ama sadece ana konumuz bu ve bu biraz sıkıcı.
‫Konuların nasıl oluşturulacağını görmek istiyoruz ve bunun için buradayız.
‫Şimdi devam edelim ve kendi başımıza birden fazla iş parçacığı oluşturalım, çünkü burada olan şey sırayla
‫yapılmasıdır.
‫Yani adım adım, sıra sıra.
‫Ancak işleri paralel olarak yapmak istiyorsak, kendi iş parçacığımızı oluşturabiliriz çünkü ana iş parçacığında çalışmasını
‫istemiyoruz, ancak paralel olarak çalışmasını istedik.
‫Şimdi yapacağım şey, burada yeni bir tehdit oluşturmak olacak.
‫Sadece yeni diyeceğim ve sonra buna iplik diyeceğim.
‫Bu yüzden burada sadece iplik sınıfını kullanıyorum ve yine parantez ve ayraçlara ihtiyacınız var.
‫Ve bu parantezlerden sonra, ikincisi ve burada eşit ve daha büyük sinüs ve küme parantezleri kullanıyorsunuz.
‫Ve buradaki parantez kapandıktan sonra başlamanız gerekir.
‫Demek konu böyle açılıyor.
‫Bu yüzden yeni bir konu başlığı oluşturdum ve hemen başlıyor çünkü Buradan Başla diyorum.
‫Sadece Start yöntemi, işletim sisteminin mevcut örneğin durumunu iş parçacığı durumu çalışıyor olarak değiştirmesine
‫neden olur.
‫Dolayısıyla, bu iş parçacığı bu iş parçacığı durumuna sahip olacaktır, bu da küme parantezleri içinde ne varsa
‫onu yürüteceği anlamına gelir.
‫Bu iş parçacığı her çağrıldığında çalışmasını istediğimiz kodumuzu buraya ekleyebiliriz.
‫Diyelim ki bu konu bizim birinci konumuz.
‫Bu yüzden birinci konu, CW Konu bir gibi bir şey yazacağım ve bunun üzerine bir saniyeliğine uyuyacağım.
‫Yani 1000 milisaniye uyuyun, bu da 1/2'dir.
‫İşte bu başlık da bunu yapacak.
‫Ve yapacağım şey, bunun altına birden fazla iplik yerleştirmek olacak.
‫Yani iplik bir, iki, üç ve dört.
‫Bu yüzden bunları yeniden adlandıracağım ve yorum yapacağım.
‫Daha önce sahip olduklarımız.
‫Konsol sağ satırları ve şimdi onu çalıştıralım.
‫Ve işte buradayız.
‫Gördüğünüz gibi, hepsi aynı anda ortaya çıktı.
‫Bu yüzden 1/2 bekledi ve sonra hepsi aynı anda ortaya çıktı.
‫Peki orada ne oluyordu?
‫Aslında bu noktaya ve belki de asıl noktaya değinmeme izin verin.
‫Evet, tam orası.
‫Tekrar çalıştıralım.
‫Şimdi programımızın tam burada durduğunu görüyoruz.
‫İşte orada.
‫Ancak aynı zamanda, burada alttaki iş parçacığı penceresinde, halihazırda açılmış iki iş parçacığı
‫olduğunu ve adı olmayan bir işçi iş parçacığı ile adı olmayan başka bir işçi iş parçacığı olduğunu görebilirsiniz.
‫Yani halihazırda çalışan yeni bir iş parçacığımız var ve ardından diğer iş parçacıklarından biri de açıldı.
‫Ve gördüğünüz gibi ana konu da.
‫Yani aynı anda üç konu var.
‫Şimdi bir sonraki adıma geçelim.
‫Bu noktada görebileceğiniz gibi, birdenbire dört iplik ortaya çıkıyor ve dolayısıyla burada sahip olduğumuz dört
‫iplik bu.
‫Yani birincisi başladığında, belki ikincisi çoktan hazırdı ama diğerleri henüz hazır
‫değildi.
‫Ve şimdi iş parçacığının bir milisaniye veya daha kısa bir süre geçtikten sonra 1000 milisaniye boyunca kaydığı noktada, diğer
‫iş parçacıklarının çoktan başladığını görebilirsiniz.
‫Yani aynı anda çalışan dört iş parçacığımız var.
‫Yani burada çoklu iş parçacıklı bir çözümümüz var.
‫Bir sonraki adımı uygularsam, gördüğünüz gibi ikinci, üçüncü ve dördüncü iplik zaten görüntüleniyor, ancak
‫konsolun sağ satırında gördüğünüz gibi birinci iplik henüz görüntülenmiyor.
‫Yani paralel çalışıyorlar, ancak gördüğünüz gibi tam olarak doğru değiller.
‫Bu nedenle, yürütülmeleri gereken sürede küçük farklılıklar olabilir.
‫Bu yüzden bir sonraki adıma geçeceğim.
‫Ve şimdi görebileceğiniz gibi, birinci iplik de tamamlandı.
‫İplikler olsa bile.
‫Ya da burada, benim kodumda belirli bir sırada, aşağı yukarı aynı anda başlatılırlar.
‫Ve gördüğünüz gibi, düşündüğümüz gibi tam olarak aynı sırada olması gerekmiyor.
‫Dolayısıyla, onları burada konumlandırdığımız sırada bitmeyecektir.
‫Ancak kod her neyse onu ne kadar hızlı bitirebildiklerine veya çalıştırabildiklerine bağlı olarak.
‫Dolayısıyla, bu kodun diğerinden biraz daha uzun veya çok daha uzun olması gerekebilir.
‫İpliklerle çalışabilmeniz için bundan çıkarmanız gereken şey budur, ancak çok ama çok dikkatli olmanız
‫gerekir çünkü potansiyel olarak yanlış gidebilecek birçok şey vardır.
‫Bunlardan bazılarını ele alacağım ve size göstereceğim ya da vereceğim ve bazılarını ele alacağım.
‫Bu konuda daha fazla bilgi edinebileceğiniz bağlantıları da sizlerle paylaşacağım.
‫Konuların nasıl oluşturulacağına ilişkin temel fikir bu kadardır.
‫Gördüğünüz gibi, işleri bu şekilde ayarlayabilirsiniz.
‫Yani iş parçacıkları genellikle küçük bir iş parçası veya yürütülen bir iş parçasıdır ve işlemcinizde
‫birden fazla çekirdek varsa aynı anda birden fazla şey yürütebilirsiniz.
‫Diyelim ki dört çekirdekli bir işlemciniz var, o zaman aynı anda dört iş parçacığı veya dört işlemci
‫çalıştırılabilir.
‫Diyelim ki yalnızca bir işlemciniz varsa, o zaman yalnızca bir iş parçacığı veya bir görev yürütülebilir, bunu yapmak asla mümkün
‫olmayacaktır.
‫Bunlar paralel olarak yürütülecektir çünkü bu tek işlemci aynı anda yalnızca belirli bir şeyi yapar.
‫Bu, çok çekirdekli bir işlemciyle çalıştığınızı veya uygulamanızın çok çekirdekli bir işlemcide çalışacağını biliyorsanız,
‫birden fazla iş parçacığı ile çalışabileceğiniz anlamına gelir, aksi takdirde sorunlarla karşılaşırsınız.
‫Ancak genel olarak nasıl çalışır, yalnızca bir çekirdeğiniz varsa, o zaman ana iş parçacığı çalışır ve
‫yalnızca ana iş parçacığı boşta kalırsa, o zaman devam eder ve başka şeyler yapar.
‫Bu yüzden diğer tehditleri çalıştıracaktır.
‫Diyelim ki bir kullanıcı arayüzünüz var ve bu kullanıcı arayüzünde sadece bir şeyler gösteriyorsunuz.
‫Bir düğmen var.
‫Sonra düğmenin üzerine gelirseniz, görünümünü değiştirir, bunun gibi şeyler.
‫Bu, ana iş parçacığı tarafından yapılan bir şeydir.
‫Ancak ana iş parçacığı meşgul değilse, diğer iş parçacıkları başlayacaktır.
‫Peki ya arka planda çalışması gereken bir şey varsa, o zaman bu iş parçacığı ana iş parçacığı meşgul
‫olmadığında veya iş parçacığı sıfır olduğunda yapılacaktır.
‫Aslında burada.
‫Yani ipliklerle ilgili.
‫Elbette konuları biraz daha inceleyeceğiz, ancak genel olarak başlangıç için size göstermek istediğim
‫şey bu.