Skip to content

fol21/rust-broadcast-buffer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rust-broadcast-buffer

Preparação do ambiente

Instale as dependencias e os executáveis do Rust e Cargo pelo link.

Execução

Ao clonar o repositório, basta utilizar o comadno cargo run com os parâmetros descritos para iniciar a tarefa.

cargo run T P C I

Onde:

  • T é a Capacidade (número de posições) do Buffer;
  • P número de Produtores;
  • C número de Consumidores;
  • I número máxima de Inserções feito por cada produtor;

ex:

cargo run 16 4 3 2

Testes de Unidade

É possível validar as propriedades do Buffer a seguir utilizando o comando de testes:

cargo test

O resumo do comportamento do buffer pode ser descrito pelas regras de negócio descritas a seguir:

  • Cada Buffer é inicializado com um número de Produtores e Consumidores fixos;
  • O Buffer é construido através de uma fila (FIFO) de dados;
  • Cada produtor observa uma fila (nxt_free) que disponibiliza a próxima posição disponível para escrita, garantindo a ordenação;
  • Cada posição é ocupada por uma estrutura de dado com um contador (bdata.falta_ler) que sinaliza quantos consumidores faltam ler o dado na posição;
  • Quando um produtor aloca um dado na fila o contador (falta_ler) é setado para o número de consumidores;
  • Quando o contador chega a zero a posiçao é desalocada e inserida na fila de posições (nxt_free);
  • Cada consumidor possui uma fila (nxt_data[meu_id]) preenchida com as posições em ordem de leitura;
  • Quando um consumidor realiza uma leitura a posição sai da sua fila (nxt_data[meu_id]);
  • Os produtores adicionam as posições a cada deposito em cada componente (nxt_data[meu_id]) para leitura;

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published