Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
połączonej listy singly połączonej (SList) ułatwia zadanie wstawiania i usuwania z listy połączonej. Listy SList są implementowane przy użyciu algorytmu blokującego w celu zapewnienia synchronizacji niepodzielnej, zwiększenia wydajności systemu i uniknięcia problemów, takich jak priorytetowe konwoje inwersji i blokady.
Listy SList są proste do zaimplementowania i użycia w 32-bitowym kodzie. Jednak implementacja ich w 64-bitowym kodzie jest trudna, ponieważ ilość danych wymienianych przez natywnie połączone elementy pierwotne wymiany nie jest dwukrotnie większa niż rozmiar adresu, ponieważ jest to kod 32-bitowy. W związku z tym listy SList umożliwiają przenoszenie wysoce skalowalnych algorytmów do systemu Windows.
Windows 8: Począwszy od systemu Windows 8 odpowiednie natywnie powiązane elementy pierwotne wymiany są dostępne dla 64-bitowego kodu, na przykład InterlockedCompare64Exchange128.
Aplikacje mogą używać list SList, wywołując funkcję InitializeSListHead w celu zainicjowania nagłówka listy. Aby wstawić elementy do listy, użyj funkcji InterlockedPushEntrySList. Aby usunąć elementy z listy, użyj funkcji InterlockedPopEntrySList.
Wszystkie elementy listy muszą być wyrównane do granicy MEMORY_ALLOCATION_ALIGNMENT. Nieprzygotowane elementy mogą powodować nieprzewidywalne wyniki. Zobacz _aligned_malloc.
Aby zapoznać się z przykładem, zobacz Using Singly Linked Lists.
W poniższej tabeli wymieniono funkcje SList.
| Funkcja | Opis |
|---|---|
| initializeSListHead | Inicjuje głowę singly połączonej listy. |
| InterlockedFlushSList | Opróżnia całą listę elementów na połączonej liście. |
| interlockedPopEntrySList | Usuwa element z przodu połączonej listy. |
| InterlockedPushEntrySList | Wstawia element na początku połączonej listy. |
| InterlockedPushListSList | Wstawia singly-linked list na początku innej singly połączonej listy. |
| InterlockedPushListSListEx | Wstawia singly-linked list na początku innej singly połączonej listy. Ta wersja metody nie używa __fastcall konwencji wywoływania. |
| RtlFirstEntrySList | Pobiera pierwszy wpis na liście połączonej singly. |
| QueryDepthSList | Pobiera liczbę wpisów na określonej liście połączonej singly. |