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.
Az összekapcsolt, egymáshoz csatolt listák (SList) megkönnyítik a csatolt listából való beszúrást és törlést. Az SList-ek blokkolásmentes algoritmussal implementálva biztosítják az atomi szinkronizálást, növelik a rendszer teljesítményét, és elkerülik az olyan problémákat, mint a prioritási inverzió és a konvojok zárolása.
Az SList-ek 32 bites kódban egyszerűen implementálódnak és használhatók. A 64 bites kódban azonban nehéz implementálni őket, mert a natív összekapcsolt exchange-primitívek által kicserélhető adatok mennyisége nem duplája a címméretnek, mint a 32 bites kódban. Ezért az SList-ek lehetővé teszik a csúcskategóriás skálázható algoritmusok Windowsba történő átvitelét.
Windows 8: Windows 8-tól kezdve a megfelelő natív, egymáshoz kapcsolt exchange-primitívek érhetők el a 64 bites kódhoz, például InterlockedCompare64Exchange128.
Az alkalmazások SList-eket használhatnak az InitializeSListHead függvény meghívásával a lista élének inicializálásához. Ha elemeket szeretne beszúrni a listába, használja az InterlockedPushEntrySList függvényt. A lista elemeinek törléséhez használja az InterlockedPopEntrySList függvényt.
Minden listaelemet egy MEMORY_ALLOCATION_ALIGNMENT határvonalhoz kell igazítani. A nem elaltatott elemek kiszámíthatatlan eredményeket okozhatnak. Lásd: _aligned_malloc.
Példa: A Singly Csatolt listák használata.
Az alábbi táblázat az SList függvényeket sorolja fel.
| Funkció | Leírás |
|---|---|
| InitializeSListHead | Inicializálja a külön csatolt lista vezetőjét. |
| InterlockedFlushSList | A teljes elemlistát kiüríti egy egymáshoz csatolt listában. |
| InterlockedPopEntrySList | Eltávolít egy elemet egy önállóan csatolt lista elejéről. |
| InterlockedPushEntrySList | Egy elemet szúr be egy önállóan csatolt lista elejére. |
| InterlockedPushListSList | Egy önállóan csatolt listát szúr be egy másik, egymáshoz kapcsolódó lista elejére. |
| InterlockedPushListSListEx | Egy önállóan csatolt listát szúr be egy másik, egymáshoz kapcsolódó lista elejére. A metódus ezen verziója nem használja a __fastcall hívási konvencióját. |
| RtlFirstEntrySList | Lekéri az első bejegyzést egy egymáshoz csatolt listában. |
| QueryDepthSList | Lekéri a megadott, egymáshoz csatolt listában szereplő bejegyzések számát. |