Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk az ERESOURCE struktúráját és a rajta működő rendszer által biztosított rutinokat ismerteti. Az ERESOURCE-struktúrák használatával olvasási/írási zárolást valósíthat meg az illesztőprogramban.
ERESOURCE-struktúra
Az ERESOURCE-struktúra a megosztott erőforrásokhoz való hozzáférés kezelésére szolgál. Ez egy mechanizmust biztosít a több szál között megosztható erőforrásokhoz való hozzáférés szinkronizálására.
Az ERESOURCE struktúra átlátszatlan; azaz tagjai rendszerhasználatra vannak fenntartva.
Az ERESOURCE tárterületét nem lapozott készletből kell lefoglalni.
ERESOURCE rutinok
A rendszer rutinokat biztosít az ERESOURCE-struktúrák beszerzéséhez és kiadásához, valamint az aktuális állapotuk vizsgálatához.
ERESOURCE-struktúra beszerzése és kiadása
Az illesztőprogramok az ERESOURCE-struktúrákat használhatják kizárólagos/megosztott szinkronizálás implementálásához. A kizárólagos/megosztott szinkronizálás a következőképpen működik:
Tetszőleges számú szál szerezhet be egy ERESOURCE-t megosztottként.
Csak egy szál szerezheti meg kizárólag az Eresource-ot. Az ERESOURCE csak akkor szerezhető be kizárólag, ha még egyetlen szál sem szerezte meg megosztottként.
Az ERESOURCE-t jelenleg nem beolvasni képes szálak opcionálisan várakozási állapotba helyezhetők, amíg az ERESOURCE be nem szerezhető. A rendszer két listát tart fenn az ERESOURCE-ra váró szálakról: a kizárólagos pincérek listájáról és a megosztott pincérek listájáról.
Az exkluzív/megosztott szinkronizálást általában olvasási/írási zárolás megvalósítására használják. Az olvasási/írási zárolás lehetővé teszi, hogy több szál is végezzen olvasási műveletet, de egyszerre csak egy szál tud írni. Ez a forgatókönyv közvetlenül implementálható az ERESOURCE beszerzése szempontjából.
Az illesztőprogram lefoglalja a tárterületet egy ERESOURCE-hoz, és inicializálja azt az ExInitializeResourceLite használatával. A rendszer fenntartja a használatban lévő összes ERESOURCE-struktúra listáját. Ha az illesztőprogramnak már nincs szüksége egy adott ERESOURCE-ra, meg kell hívnia az ExDeleteResourceLite-et , hogy törölje azt a rendszer listájából. Az illesztőprogram az ExReinitializeResourceLite meghívásával újra felhasználhatja az ERESOURCE-t.
Az illesztőprogramok az alábbi alapvető műveleteket hajthatják végre az ERESOURCE-n:
Szerezze be az ExAcquireResourceSharedLite-nel megosztott ERESOURCE-t. Ez a rutin csak akkor szerzi be az erőforrást, ha az erőforrást nem kizárólagosan szerezték be, és nincsenek kizárólagos pincérek.
Kizárólag az ExAcquireResourceExclusiveLite használatával szerezhet be ERESOURCE-t. Ez a rutin mindaddig beszerzi az erőforrást, amíg nem kizárólag vagy megosztottként lett beszerezve.
Kizárólagos beszerzés átalakítása megosztott beszerzéssé az ExConvertExclusiveToSharedLite használatával.
Egy beszerzett erőforrás felszabadítása az ExReleaseResourceLite használatával.
Az ExAcquireResourceSharedLite és az ExAcquireResourceExclusiveLitevárakozási paramétere határozza meg, hogy az aktuális szál megvárja-e az ERESOURCE beszerzését. Ha HAMIS értéket ad meg, és az ERESOURCE nem szerezhető be, akkor a rutin HAMIS értéket ad vissza. Ha IGAZ értéket ad meg, akkor az aktuális szál felkerül az ERESOURCE megfelelő várakozási listájára.
Az ERESOURCE-struktúra állapotának vizsgálata
Az illesztőprogram az alábbi módon is meghatározhatja az ERESOURCE aktuális állapotát:
Az ExIsResourceAcquiredLite vagy az ExIsResourceAcquiredSharedLite használatával állapítsa meg, hogy az ERESOURCE-t már megosztottként vagy kizárólagosként szerezték-e be. Az ExIsResourceAcquiredExclusiveLite használatával ellenőrizze, hogy az ERESOURCE-t kifejezetten kizárólag beolvasták-e.
Az ExGetSharedWaiterCount használatával határozza meg az ERESOURCE-hoz tartozó megosztott pincérek számát, és az ExGetExclusiveWaiterCount használatával határozza meg az ERESOURCE kizárólagos pincéreinek számát.