Megosztás a következőn keresztül:


Vékony olvasó/író (SRW) zárolások

A vékony olvasó/író (SRW) zárolások lehetővé teszik, hogy egyetlen folyamat szálai hozzáférjenek a megosztott erőforrásokhoz; ezek a sebességre vannak optimalizálva, és nagyon kevés memóriát foglalnak el. A vékony olvasó-író zárolások nem oszthatók meg a folyamatok között.

Az olvasószálak egy megosztott erőforrásból olvasnak adatokat, míg az írószálak adatokat írnak egy megosztott erőforrásba. Ha több szál olvas és ír egy megosztott erőforrást, a kizárólagos zárolások, például egy kritikus szakasz vagy a mutex szűk keresztmetszetté válhatnak, ha az olvasószálak folyamatosan futnak, de az írási műveletek ritkák.

Az SRW-zárolások két módot biztosítanak, amelyekben a szálak hozzáférhetnek egy megosztott erőforráshoz:

  • megosztott módú, amely megosztott írásvédett hozzáférést biztosít több olvasószálhoz, amely lehetővé teszi számukra, hogy egyszerre olvassák az adatokat a megosztott erőforrásból. Ha az olvasási műveletek túllépik az írási műveleteket, ez az egyidejűség növeli a teljesítményt és az átviteli sebességet a kritikus szakaszokhoz képest.

    Jegyzet

    A megosztott módú SRW-zárolásokat nem szabad rekurzív módon beszerezni, mivel ez holtpontokhoz vezethet, ha kizárólagos beszerzéssel kombinálják.

  • exkluzív módú, amely olvasási/írási hozzáférést biztosít egyszerre egy írószálhoz. Ha a zárolást kizárólagos módban szerezték be, más szál nem férhet hozzá a megosztott erőforráshoz, amíg az író fel nem oldja a zárolást.

    Jegyzet

    Az exkluzív módú SRW-zárolások nem szerezhetők be rekurzív módon. Ha egy szál megpróbál beszerezni egy már meglévő zárolást, a kísérlet meghiúsul (TryAcquireSRWLockExclusive) vagy holtpont (AcquireSRWLockExclusiveesetén)

Egyetlen SRW-zárolás bármelyik módban beszerezhető; az olvasószálak közös módban szerezhetik be, míg az írószálak exkluzív módban szerezhetik be. Nincs garancia arra vonatkozóan, hogy a tulajdonjogot kérő szálak milyen sorrendben kapnak tulajdonjogot; Az SRW-zárak nem tisztességesek, és nem is FIFO.

Az SRW-zárolás a mutató mérete. Ennek az az előnye, hogy gyorsan frissítheti a zárolási állapotot. A hátránya, hogy nagyon kevés állapotinformáció tárolható, így az SRW-zárolások nem észlelik a helytelen rekurzív használatot megosztott módban. Ezenkívül egy megosztott módban SRW-zárolást birtokoló szál nem tudja kizárólagos módra frissíteni a zárolás tulajdonjogát.

A hívónak ki kell foglalnia egy SRWLOCK-struktúrát, és inicializálnia kell azt InitializeSRWLock meghívásával (a struktúra dinamikus inicializálásához), vagy az állandó SRWLOCK_INIT hozzá kell rendelnie a struktúraváltozóhoz (a struktúra statikus inicializálásához).

Az Application Verifier használatával megkeresheti az SRW-zárolások rekurzív (reentrant) használatát.

Az alábbiakban az SRW zárolási függvényei szerepelnek.

SRW lock függvény Leírás
AcquireSRWLockExclusive Exkluzív módban szerez be egy SRW-zárolást.
AcquireSRWLockShared SRW-zárolást szerez be megosztott módban.
InitializeSRWLock SRW-zárolás inicializálása.
ReleaseSRWLockExclusive Kibocsát egy kizárólagos módban megnyitott SRW-zárolást.
ReleaseSRWLockShared A megosztott módban megnyitott SRW-zárolást oldja fel.
SleepConditionVariableSRW A megadott feltételváltozón alszik, és a megadott zárolást atomi műveletként oldja fel.
TryAcquireSRWLockExclusive Egy vékony olvasó/író (SRW) zárolásának kizárólagos módban történő beszerzésére tett kísérlet. Ha a hívás sikeres, a hívó szál átveszi a zárolás tulajdonjogát.
TryAcquireSRWLockShared Egy vékony olvasó/író (SRW) zárolásának beszerzése megosztott módban. Ha a hívás sikeres, a hívó szál átveszi a zárolás tulajdonjogát.