Aracılığıyla paylaş


ERESOURCE yapısı ve rutinleri

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 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: