Aracılığıyla paylaş


C++ ve MFC ile Çoklu İş Parçacığı Kullanımı

Uyarı

Microsoft Foundation Sınıfları (MFC) kitaplığına destek verilmeye devam ediliyor. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.

Microsoft Foundation Sınıfı (MFC) kitaplığı, çok iş parçacıklı uygulamalar için destek sağlar. Bu konu başlığında, işlemler ve iş parçacıkları ile MFC'nin çoklu iş parçacığı kullanımı yaklaşımı açıklanmaktadır.

İşlem, bir uygulamanın yürütülen bir örneğidir. Örneğin, Not Defteri simgesine çift tıkladığınızda, Not Defteri'ni çalıştıran bir işlem başlatırsınız.

İş parçacığı, bir işlem içindeki yürütme yoludur. Not Defteri'ni başlattığınızda, işletim sistemi bir işlem oluşturur ve bu işlemin birincil iş parçacığını yürütmeye başlar. Bu iş parçacığı sonlandırıldığında işlem de sonlanır. Bu birincil iş parçacığı, başlangıç kodu tarafından bir işlev adresi biçiminde işletim sistemine sağlanır. Genellikle, sağlanan main veya WinMain işlevinin adresidir.

İsterseniz uygulamanızda ek iş parçacığı (thread) oluşturabilirsiniz. Kullanıcının tamamlanmasını beklemesini istemediğinizde, arka plan veya bakım görevlerini işlemek için bunu yapmak isteyebilirsiniz. MFC uygulamalarındaki tüm iş parçacıkları CWinThread nesneleriyle temsil edilir. Çoğu durumda, bu nesneleri açıkça oluşturmanız bile gerekmez; bunun yerine, nesneyi sizin için oluşturan AfxBeginThread çerçeve yardımcı işlevini çağırınCWinThread.

MFC iki tür iş parçacığını ayırt eder: kullanıcı arabirimi iş parçacıkları ve çalışan iş parçacıkları. Kullanıcı arabirimi iş parçacıkları genellikle kullanıcı girişini işlemek ve kullanıcı tarafından oluşturulan olaylara ve iletilere yanıt vermek için kullanılır. Çalışan iş parçacıkları genellikle kullanıcı girişi gerektirmeyen yeniden hesaplama gibi görevleri tamamlamak için kullanılır. Win32 API'sinde iş parçacığı türleri birbirinden ayrım yapılmaz; yalnızca iş parçacığını yürütmeye başlayabilmesi için iş parçacığının başlangıç adresini bilmesi gerekir. MFC, kullanıcı arabirimindeki olaylar için bir ileti pompası sağlayarak kullanıcı arabirimi iş parçacıklarını özel olarak işler. CWinApp, CWinThread'den türetilen ve kullanıcı tarafından oluşturulan olayları ve iletileri işleyen bir kullanıcı arabirimi iş parçacığı nesnesi örneğidir.

Birden fazla iş parçacığının aynı nesneye erişim gerektirebileceği durumlara özellikle dikkat edilmelidir. Çoklu iş parçacığı kullanımı: Programlama İpuçları , bu durumlarda ortaya çıkabilecek sorunlara geçici bir çözüm bulmak için kullanabileceğiniz teknikleri açıklar. Çoklu İş Parçacığı Kullanımı: Eşitleme Sınıflarını Kullanma, birden çok iş parçacığından tek bir nesneye erişimi eşitlemek için kullanılabilen sınıfların nasıl kullanılacağını açıklar.

Doğası gereği çok iş parçacıklı programlama yazma ve hata ayıklama karmaşık ve zorlu bir girişimdir, çünkü nesnelere aynı anda birden fazla iş parçacığı tarafından erişilmediğinden emin olmanız gerekir. Çoklu iş parçacığı kullanımı konuları, çok iş parçacıklı programlamanın temellerini öğretmez, yalnızca çok iş parçacıklı programınızda MFC'nin nasıl kullanılacağını öğretir. Visual C++'da yer alan çok iş parçacıklı MFC örnekleri, MFC'nin kapsamadığı bazı çoklu iş parçacıklı işlevsellik ve Win32 API'lerini gösterir; ancak, yalnızca bir başlangıç noktası olarak tasarlanmıştır.

İşletim sisteminin işlemleri ve iş parçacıklarını nasıl işlediği hakkında daha fazla bilgi için bkz . Windows SDK'sında İşlemler ve İş Parçacıkları .

MFC çoklu iş parçacığı desteği hakkında daha fazla bilgi için aşağıdaki konulara bakın:

Ayrıca bkz.

Eski Kod için Çoklu İş Parçacığı Kullanma Desteği (Visual C++)