Utilize Thread View (Visualização de Encadeamento) como a visualização principal para detectar gargalos de encadeamento. Ela exibe um registro da atividade de cada um dos encadeamentos no programa e o ajuda a identificar contenções e conflitos de encadeamentos.
Uma contenção ocorre quando um encadeamento está aguardando um recurso que não está prontamente disponível; isso torna lenta a execução do seu código, mas pode melhorar ao longo do tempo.
Um conflito ocorre quando um encadeamento está aguardando por um recurso
que um segundo encadeamento bloqueou e o segundo encadeamento está aguardando por um recurso
que o primeiro encadeamento bloqueou. Mais de dois encadeamentos podem estar envolvidos em
um conflito. Um conflito nunca é resolvido por si mesmo. Ele normalmente causa a interrupção do
aplicativo inteiro ou da parte que está experimentando o conflito.
Para localizar contenções
e conflitos de encadeamento:
- Exiba a Thread View (Visualização de Encadeamento): Clique com o botão direito do mouse no recurso de traçado de perfil Thread Analysis (Análise de Encadeamento) e, em seguida, clique em .
- Na Thread View (Visualização de Encadeamento), procure setas verticais entre os encadeamentos. Uma única seta indica uma contenção de encadeamento em que um encadeamento está
aguardando que outro encadeamento libere um bloqueio. Várias setas indicam um conflito
onde dois encadeamentos pertencem ao mesmo estado de conflito de encadeamento. Um marcador com formato
de losango indica que embora um encadeamento esteja aguardando por um bloqueio, o encadeamento
que retém o bloqueio não pode ser determinado.
- Pause o cursor sobre um segmento de encadeamento que esteja aguardando por um bloqueio
ou sobre um conflito. isso exibe uma Dica de Ferramenta que especifica o nome da trava e
identifica o encadeamento que está mantendo a trava.
Aqui está um exemplo de contenção:

Aqui está um exemplo de conflito:

Nota: Se você traçar o perfil de um programa com o tipo de traçado de perfil Execution Time Analysis (Análise do Tempo de Execução), será possível coletar e exibir dados de encadeamento, mas apenas para encadeamentos nos estados
Running (Em Execução) e Dead (Inativo). Para exibir gargalos,
é necessário incluir o tipo de traçado de perfil Thread Analysis (Análise de Encadeamento) no conjunto de traçado de perfil.
Os tópicos a seguir fornecem instruções para
controlar a Thread View (Visualização de Encadeamento):