C++ ve MCF ile Çoklu İş Parçacığı Kullanımı
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 veya WinMain
işlevinin adresidirmain
.
İsterseniz uygulamanızda ek iş parçacıkları 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
kullanıcı arabirimi iş parçacığı nesnesine bir örnektir, çünkü kullanıcı tarafından oluşturulan olayları ve iletileri türetir CWinThread
ve işler.
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.
Çok iş parçacıklı programlama yazma ve hata ayıklama, doğası gereği karmaşık ve karmaşık 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 bulunan çok iş parçacıklı MFC örnekleri, MFC tarafından kapsamayan birkaç çok iş parçacıklı İşlevsellik ve Win32 API'sini gösterir; ancak, yalnızca bir başlangıç noktası olması amaçlanmış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:
Çoklu İş Parçacığı Kullanımı: Kullanıcı Arabirimi İş Parçacıkları Oluşturma
Çoklu İş Parçacığı Kullanımı: Çalışan İş Parçacıkları Oluşturma
Çoklu İş Parçacığı Kullanımı: Eşitleme Sınıfları Ne Zaman Kullanılır?
Ayrıca bkz.
Eski Kod için Çoklu İş Parçacığı Kullanma Desteği (Visual C++)