İş parçacıkları ve iş parçacığı oluşturma
Çoklu iş parçacığı kullanımı, uygulamanızın yanıt hızını artırmanıza ve uygulamanız çok işlemcili veya çok çekirdekli bir sistemde çalışıyorsa aktarım hızını artırmanıza olanak tanır.
İşlemler ve iş parçacıkları
İşlem, yürütülen bir programdır. İşletim sistemi yürütülmekte olan uygulamaları ayırmak için işlemleri kullanır. İş parçacığı, işletim sisteminin işlemci süresini ayırdığı temel birimdir. Her iş parçacığının bir zamanlama önceliği vardır ve iş parçacığının yürütmesi duraklatıldığında sistemin iş parçacığı bağlamını kaydetmek için kullandığı bir dizi yapıyı korur. İş parçacığı bağlamı, iş parçacığının CPU yazmaçları ve yığını da dahil olmak üzere yürütmeyi sorunsuz bir şekilde sürdürmek için ihtiyaç duyduğu tüm bilgileri içerir. Bir işlem bağlamında birden çok iş parçacığı çalıştırılabilir. Bir işlemin tüm iş parçacıkları sanal adres alanını paylaşır. Bir iş parçacığı, program kodunun herhangi bir bölümünü yürütebilir ve şu anda başka bir iş parçacığı tarafından yürütülen parçalar da dahil olabilir.
Not
.NET Framework, uygulama etki alanlarının kullanımıyla bir işlem içindeki uygulamaları yalıtmak için bir yol sağlar. (Uygulama etki alanları .NET Core'da kullanılamaz.) Daha fazla bilgi için, Uygulama etki alanları makalesinin Uygulama etki alanları ve iş parçacıkları bölümüne bakın.
Varsayılan olarak, bir .NET programı genellikle birincil iş parçacığı olarak adlandırılan tek bir iş parçacığıyla başlatılır. Ancak, kodu birincil iş parçacığıyla paralel veya eşzamanlı olarak yürütmek için ek iş parçacıkları oluşturabilir. Bu iş parçacıkları genellikle çalışan iş parçacıkları olarak adlandırılır.
Birden çok iş parçacığı ne zaman kullanılır?
Uygulamanızın yanıt hızını artırmak ve uygulamanın aktarım hızını artırmak için çok işlemcili veya çok çekirdekli bir sistemden yararlanmak için birden çok iş parçacığı kullanırsınız.
Birincil iş parçacığının kullanıcı arabirimi öğelerinden sorumlu olduğu ve kullanıcı eylemlerine yanıt verdiği bir masaüstü uygulaması düşünün. Çalışan iş parçacıklarını kullanarak birincil iş parçacığını kaplayan ve kullanıcı arabirimini yanıt vermeyen hale getiren zaman alan işlemler gerçekleştirin. Gelen iletilere veya olaylara daha hızlı yanıt vermek için ağ veya cihaz iletişimi için ayrılmış bir iş parçacığı da kullanabilirsiniz.
Programınız paralel olarak gerçekleştirilebilecek işlemler gerçekleştiriyorsa, bu işlemleri ayrı iş parçacıklarında gerçekleştirip programı çok işlemcili veya çok çekirdekli bir sistemde çalıştırarak toplam yürütme süresi azaltılabilir. Böyle bir sistemde çoklu iş parçacığı kullanımı, artan yanıt hızıyla birlikte aktarım hızını da artırabilir.
.NET'te çoklu iş parçacığı kullanımı
.NET Framework 4'den başlayarak, çok iş parçacığı kullanmanın önerilen yolu Görev Paralel Kitaplığı (TPL) ve Paralel LINQ (PLINQ) kullanmaktır. Daha fazla bilgi için bkz . Paralel programlama.
Hem TPL hem de PLINQ iş parçacıklarına ThreadPool güvenir. sınıfı, System.Threading.ThreadPool çalışan iş parçacıkları havuzuna sahip bir .NET uygulaması sağlar. İş parçacığı havuzu iş parçacıklarını da kullanabilirsiniz. Daha fazla bilgi için bkz . Yönetilen iş parçacığı havuzu.
Sonunda, yönetilen iş parçacığını System.Threading.Thread temsil eden sınıfını kullanabilirsiniz. Daha fazla bilgi için bkz . İş parçacıklarını ve iş parçacığını kullanma.
Paylaşılan bir kaynağa birden çok iş parçacığının erişmesi gerekebilir. Kaynağı bozuk durumda tutmak ve yarış koşullarından kaçınmak için iş parçacığı erişimini buna eşitlemeniz gerekir. Birden çok iş parçacığının etkileşimini koordine etmek de isteyebilirsiniz. .NET, paylaşılan bir kaynağa erişimi eşitlemek veya iş parçacığı etkileşimini koordine etmek için kullanabileceğiniz bir dizi tür sağlar. Daha fazla bilgi için bkz . Eşitleme temel bilgilerine genel bakış.
İş parçacıklarında özel durumları işleyebilir. İş parçacıklarındaki işlenmeyen özel durumlar genellikle işlemi sonlandırır. Daha fazla bilgi için bkz . Yönetilen iş parçacıklarında özel durumlar.