Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um de lista interligado isoladamente (SList) facilita a tarefa de inserção e exclusão de uma lista vinculada. SLists são implementados usando um algoritmo sem bloqueio para fornecer sincronização atômica, aumentar o desempenho do sistema e evitar problemas como inversão de prioridade e comboios de bloqueio.
SLists são simples de implementar e usar em código de 32 bits. No entanto, é um desafio implementá-los em código de 64 bits porque a quantidade de dados intercambiáveis pelas primitivas de câmbio intertravadas nativas não é o dobro do tamanho do endereço, como é no código de 32 bits. Portanto, o SLists permite a portabilidade de algoritmos escaláveis high-end para o Windows.
Windows 8: A partir do Windows 8, as primitivas de câmbio interbloqueadas nativas apropriadas estão disponíveis para código de 64 bits, por exemplo, InterlockedCompare64Exchange128.
Os aplicativos podem usar SLists chamando a funçãoInitializeSListHead para inicializar o cabeçalho da lista. Para inserir itens na lista, use a funçãoInterlockedPushEntrySList. Para excluir itens da lista, use a funçãoInterlockedPopEntrySList.
Todos os itens da lista devem estar alinhados em um limite de MEMORY_ALLOCATION_ALIGNMENT. Itens não alinhados podem causar resultados imprevisíveis. Ver _aligned_malloc.
Para obter um exemplo, consulte Usando listas vinculadas individualmente.
A tabela a seguir lista as funções SList.
| Função | Descrição |
|---|---|
| InitializeSListHead | Inicializa o cabeçalho de uma lista vinculada individualmente. |
| InterlockedFlushSList | Libera toda a lista de itens em uma lista vinculada individualmente. |
| InterlockedPopEntrySList | Remove um item da frente de uma lista vinculada individualmente. |
| InterlockedPushEntrySList | Insere um item na frente de uma lista vinculada individualmente. |
| InterlockedPushListSList | Insere uma lista vinculada individualmente na frente de outra lista vinculada individualmente. |
| InterlockedPushListSListEx | Insere uma lista vinculada individualmente na frente de outra lista vinculada individualmente. Esta versão do método não usa a convenção de chamada __fastcall. |
| RtlFirstEntrySList | Recupera a primeira entrada em uma lista vinculada individualmente. |
| QueryDepthSList | Recupera o número de entradas na lista de links individuais especificada. |