ERESOURCE-struktúra és rutinok

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:

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: