다음을 통해 공유


연동된 Singly 연결된 목록

SList(연동 연결 목록)를 통해 연결된 목록에서 삽입 및 삭제 작업을 쉽게 수행할 수 있습니다. SList는 비블로킹 알고리즘을 사용하여 원자성 동기화를 제공하고 시스템 성능을 향상하며 우선 순위 반전 및 잠금 호송과 같은 문제를 방지하기 위해 구현됩니다.

SList는 32비트 코드에서 구현하고 사용하기 쉽습니다. 그러나 네이티브 연동 교환 기본 형식으로 교환할 수 있는 데이터의 양이 32비트 코드와 같이 주소 크기의 두 배가 아니기 때문에 64비트 코드에서 구현하기가 어렵습니다. 따라서 SList를 사용하면 확장 가능한 고급 알고리즘을 Windows로 이식할 수 있습니다.

Windows 8: Windows 8 시작하여 64비트 코드(예: InterlockedCompare64Exchange128)에 적절한 네이티브 연동 교환 기본 형식을 사용할 수 있습니다.

애플리케이션은 InitializeSListHead 함수를 호출하여 목록의 헤드를 초기화하여 SLists를 사용할 수 있습니다. 목록에 항목을 삽입하려면 InterlockedPushEntrySList 함수를 사용합니다. 목록에서 항목을 삭제하려면 InterlockedPopEntrySList 함수를 사용합니다.

모든 목록 항목은 MEMORY_ALLOCATION_ALIGNMENT 경계에 맞춰야 합니다. 정렬되지 않은 항목으로 인해 예측할 수 없는 결과가 발생할 수 있습니다. _aligned_malloc 참조하세요.

예제는 Singly 연결된 목록 사용을 참조하세요.

다음 표에서는 SList 함수를 나열합니다.

함수 Description
InitializeSListHead Singly 연결된 목록의 헤드를 초기화합니다.
InterlockedFlushSList 연결된 목록의 전체 항목 목록을 플러시합니다.
InterlockedPopEntrySList 연결된 목록의 앞면에서 항목을 제거합니다.
InterlockedPushEntrySList 연결된 목록의 맨 앞에 항목을 삽입합니다.
InterlockedPushListSList 다른 Singly 연결된 목록의 맨 앞에 singly 연결 목록을 삽입합니다.
InterlockedPushListSListEx 다른 Singly 연결된 목록의 맨 앞에 singly 연결 목록을 삽입합니다. 이 버전의 메서드는 __fastcall 호출 규칙을 사용하지 않습니다.
RtlFirstEntrySList 연결된 목록의 첫 번째 항목을 검색합니다.
QueryDepthSList 지정된 singly 연결된 목록의 항목 수를 검색합니다.