Sınıf CCriticalSection bir nesneyi temsil eden "önemli bir bölümü" kaynak veya kod bölümüne erişmek için bir defada bir parçacığı veren eşitleme nesnesi. Kritik bölüm, bir defada yalnızca bir iş parçacığının verileri veya başka bir denetlenen kaynağı değiştirmek için izin verilmesi gerektiğinde kullanışlıdır. Örneğin, bağlantılı listeye düğüm ekleme bir iş parçacığı tarafından teker teker izin sadece bir süreçtir. Bağlantılı liste denetlemek için CCriticalSection nesnesini kullanarak, bir defada yalnızca bir iş parçacığının listesine erişebilirsiniz.
Kritik bölümler, hız çok önemlidir ve kaynak işlem sınırları boyunca kullanılmayacak uyumu yerine kullanılır. mfc içinde uyumu kullanma hakkında daha fazla bilgi için bkz: CMutex.
Bir CCriticalSection nesne kullanmak için bunu gerektiğinde CCriticalSection nesnesi oluşturun. Kurucunun döndüğünde sonra kritik kısmına erişebilirsiniz. İşiniz bittiğinde Unlock çağrı kritik bölüm erişme.
Bu şekilde bir CCriticalSection nesnesi tarafından denetlenen bir kaynağa erişmek için önce CSingleLocktüründe bir değişken oluşturmak , kaynağın erişim üye işlevi. Sonra kilit nesnenin kilit üye işlev (örneğin, CSingleLock::Lock) arayın. Bu noktada, iplik ya da kaynağa erişmek, kaynağının yayımlanması ve erişmek ya da yayımlanması için kaynak ve zaman aşımı, kaynağa erişmek başarısız beklemek bekleyin. Her durumda, kaynak, bir iş parçacığı güvenli şekilde erişilmiş. Kaynağı serbest bırakmak için kilit nesnenin kilidini üye işlevini (örneğin, CSingleLock::Unlock) veya kilit nesne kapsamı dışında kalan izin.
Alternatif olarak, tek başına bir CCriticalSection nesnesi oluşturun ve kontrollü bir kaynağa erişmeyi denemeden önce açıkça erişim. Bu yöntem, daha net birisi kaynak kodunuzu okuma sırasında kilit ve kritik bölüm önce ve sonra erişim kilidini hatırlamak gerekir gibi daha fazla hataya.
CCriticalSection nesneler hakkında daha fazla bilgi için bkz: yazı Multithreading: eşitleme sınıflarının nasıl kullanılacağını Visual c++ Programcı Kılavuzu.
# include lt;afxmt.h>
Sınıf üyeleri |nbsp; Temel sınıf | Hiyerarşi çizelgesi
Ör&neknbsp; mfc örnek MTGDI
Ayrıca bkz: CMutex
Index