연동된 Singly 연결된 목록
SList(연동 연결 목록)를 통해 연결된 목록에서 삽입 및 삭제 작업을 쉽게 수행할 수 있습니다. SList는 비블로킹 알고리즘을 사용하여 원자성 동기화를 제공하고 시스템 성능을 향상하며 우선 순위 반전 및 잠금 호송과 같은 문제를 방지하기 위해 구현됩니다.
SList는 32비트 코드에서 구현하고 사용하기 쉽습니다. 그러나 네이티브 연동 교환 기본 형식으로 교환할 수 있는 데이터의 양이 32비트 코드와 같이 주소 크기의 두 배가 아니기 때문에 64비트 코드에서 구현하기가 어렵습니다. 따라서 SList를 사용하면 확장 가능한 고급 알고리즘을 Windows로 이식할 수 있습니다.
Windows 8: Windows 8 시작하여 64비트 코드(예: InterlockedCompare64Exchange128)에 적절한 네이티브 연동 교환 기본 형식을 사용할 수 있습니다.
애플리케이션은 InitializeSListHead 함수를 호출하여 목록의 헤드를 초기화하여 SLists를 사용할 수 있습니다. 목록에 항목을 삽입하려면 InterlockedPushEntrySList 함수를 사용합니다. 목록에서 항목을 삭제하려면 InterlockedPopEntrySList 함수를 사용합니다.
모든 목록 항목은 MEMORY_ALLOCATION_ALIGNMENT 경계에 맞춰야 합니다. 정렬되지 않은 항목으로 인해 예측할 수 없는 결과가 발생할 수 있습니다. _aligned_malloc 참조하세요.
다음 표에서는 SList 함수를 나열합니다.
함수 | Description |
---|---|
InitializeSListHead | Singly 연결된 목록의 헤드를 초기화합니다. |
InterlockedFlushSList | 연결된 목록의 전체 항목 목록을 플러시합니다. |
InterlockedPopEntrySList | 연결된 목록의 앞면에서 항목을 제거합니다. |
InterlockedPushEntrySList | 연결된 목록의 맨 앞에 항목을 삽입합니다. |
InterlockedPushListSList | 다른 Singly 연결된 목록의 맨 앞에 singly 연결 목록을 삽입합니다. |
InterlockedPushListSListEx | 다른 Singly 연결된 목록의 맨 앞에 singly 연결 목록을 삽입합니다. 이 버전의 메서드는 __fastcall 호출 규칙을 사용하지 않습니다. |
RtlFirstEntrySList | 연결된 목록의 첫 번째 항목을 검색합니다. |
QueryDepthSList | 지정된 singly 연결된 목록의 항목 수를 검색합니다. |