Partilhar via


Regimes de atribuição

O diagrama a seguir representa um único alocador atribuído para uso por três filtros. Nenhuma alocação é necessária nos filtros de transformação ou sumidouro porque o sistema não atribuiu um identificador de alocador a esses filtros.

diagrama ilustrando uma configuração simples do alocador.

O filtro de origem aloca um quadro, preenche-o com dados e envia-o para o próximo filtro. O filtro de transformação executa uma transformação de dados in situ e envia o frame para o próximo filtro. Quando o filtro secundário conclui a operação de E/S, o filtro de origem libera ou reutiliza o quadro. O controlo de fluxo é mantido neste gráfico de filtro pelo número total de quadros pendentes que podem ser alocados a partir do alocador de saída e pela taxa de conclusão da operação de entrada/saída.

O diagrama a seguir representa uma configuração de alocador na qual um quadro de origem é roteado para vários coletores de destino.

Diagrama ilustrando uma configuração de alocador com vários coletores.

No diagrama, o gravador de arquivos poderia representar a gravação de áudio como forma de onda num ficheiro, e o dispositivo uma placa de som para a qual o áudio está a ser enviado.

Este gráfico de filtro contém dois alocadores: o alocador da transformação e o alocador do dispositivo. O filtro de origem aloca um frame do alocador de transformação, preenche-o com dados, envia-o para o filtro de transformação e, em seguida, para o gravador de ficheiros. Ao receber um quadro, o filtro de transformação aloca um quadro do alocador de dispositivo, executa uma transformação dos dados no novo quadro e envia esse quadro para o dispositivo.

O controlo de fluxo é mantido neste grafo de filtros pelo número total de frames pendentes que podem ser alocados a partir dos alocadores e pela taxa de conclusão das operações de E/S. Observe que deve haver um alocador separado para cada lista separada de segmentos de origem/coletor criados por meio de pinos de conexão. Se alocadores separados não estiverem presentes, um determinado segmento pode consumir todos os quadros disponíveis, não deixando nenhum para o próximo segmento, que pode exigir um ou mais quadros para processar os dados criados pelo segmento anterior.