Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, ERESOURCE yapısı ve üzerinde çalışan sistem tarafından sağlanan yordamlar açıklanmaktadır. Sürücünüzde okuma/yazma kilitleme uygulamak için ERESOURCE yapılarını kullanabilirsiniz.
ERESOURCE yapısı
ERESOURCE yapısı, paylaşılan kaynaklara erişimi yönetmek için kullanılır. Birden çok iş parçacığı arasında paylaşılabilen kaynaklara erişimi eşitlemek için bir mekanizma sağlar.
ERESOURCE yapısı opaktır; diğer bir ifadeyle üyeleri sistem kullanımı için ayrılmıştır.
ERESOURCE için depolama alanı, sayfalanmamış havuzdan tahsis edilmelidir.
ERESOURCE işlevleri
Sistem, ERESOURCE yapılarını edinmek ve serbest bırakmak, ayrıca mevcut durumlarını incelemek için prosedürler sağlar.
ERESOURCE yapısını edinme ve serbest bırakma
Sürücüler özel/paylaşılan eşitleme uygulamak için ERESOURCE yapılarını kullanabilir. Özel/ortak senkronizasyon aşağıdaki gibi çalışır:
Herhangi bir sayıda iş parçacığı, paylaşılan biçimde bir ERESOURCE alabilir.
Yalnızca bir iş parçacığı bir ERESOURCE'u özel olarak alabilir. ERESOURCE yalnızca başka hiçbir iş parçacığı onu paylaşımlı olarak edinmemişse münferit olarak edinilebilir.
Şu anda bir iş parçacığı ERESOURCE alamıyorsa, isteğe bağlı olarak ERESOURCE alınıncaya kadar bekleme durumuna geçirilebilir. Sistem, ERESOURCE bekleyen iş parçacıklarının iki listesini tutar: özel bekleyenler listesi ve paylaşılan bekleyenler listesi.
Özel/paylaşılan eşitleme için tipik bir kullanım, okuma/yazma kilidi uygulamaktır. Okuma/yazma kilidi, birkaç iş parçacığının bir okuma işlemi gerçekleştirmesine izin verir, ancak aynı anda yalnızca bir iş parçacığı yazabilir. Bu senaryo, bir ERESOURCE edinme işlemi açısından doğrudan uygulanabilir.
Sürücü bir ERESOURCE için depolamayı ayırır ve ExInitializeResourceLite ile başlatır. Sistem, kullanımdaki tüm ERESOURCE yapılarının listesini tutar. Sürücü artık belirli bir ERESOURCE gerektirmediğinde, sistemin listesinden silmek için ExDeleteResourceLite çağrısı yapmalıdır. Sürücü ayrıca ExReinitializeResourceLite çağrısı yaparak bir ERESOURCE'u yeniden kullanabilir.
Sürücüler bir ERESOURCE üzerinde aşağıdaki temel işlemleri gerçekleştirebilir:
ExAcquireResourceSharedLite ile paylaşılan bir ERESOURCE edinin. Bu rutin, kaynak özel olarak tahsis edilmemişse ve özel bekleyenler bulunmaması durumunda kaynağı alır.
ExAcquireResourceExclusiveLite ile özel olarak bir ERESOURCE alın. Bu rutin, kaynağı yalnızca veya paylaşımlı olarak alınmamış olduğu sürece elde eder.
ExConvertExclusiveToSharedLite ile özel bir alımı paylaşılan bir alıma dönüştürün.
ExReleaseResourceLite ile alınan bir kaynağı serbest bırakın.
ExAcquireResourceSharedLite ve ExAcquireResourceExclusiveLite fonksiyonlarının Wait parametresi, geçerli iş parçacığının ERESOURCE'u edinmek için bekleyip beklemeyeceğini belirler. FALSE değerini belirtirseniz ve ERESOURCE alınamazsa, fonksiyon FALSE döndürür. TRUE değerini belirtirseniz, geçerli iş parçacığı ERESOURCE için uygun bekleme listesine eklenir.
ERESOURCE yapısının durumunu inceleme
Bir sürücü, ERESOURCE'un geçerli durumunu da aşağıdaki gibi belirleyebilir:
ERESOURCE'un zaten paylaşılan veya özel olarak alındığını belirlemek için ExIsResourceAcquiredLite veya ExIsResourceAcquiredSharedLite kullanın. ERESOURCE'un özel olarak alınıp alınmadığını denetlemek için ExIsResourceAcquiredExclusiveLite kullanın.
ERESOURCE için paylaşılan garson sayısını belirlemek için ExGetSharedWaiterCount kullanın ve ERESOURCE için özel garson sayısını belirlemek için ExGetExclusiveWaiterCount kullanın.