TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Modelo de Relatório de PPC

Por:   •  10/8/2018  •  Relatório de pesquisa  •  1.612 Palavras (7 Páginas)  •  253 Visualizações

Página 1 de 7

Introdução

O objetivo desse relatório é descrever a aplicação dos conhecimentos e técnicas

aprendidos durante a disciplina de Programação Paralela e Concorrente – 2014.2,

através do problema da Conta Poupança, definido previamente no início da cadeira. O

relatório contém informações sobre o problema proposto, especificações sobre a

implementação, política e técnicas de sincronização utilizadas, estrutura de classes

adotadas, resultados obtidos e comentários sobre a experiência com o

desenvolvimento.

Problema da Conta de Poupança

Imagine a seguinte situação: temos uma conta poupança compartilhada por várias

pessoas. As pessoas (clientes) podem sacar ou depositar dinheiro continuamente. O

saldo da conta é resultado das transações de saque e depósito (saldo = valor dos

depósitos atuais – valor dos saques atuais).

A conta deve obedecer as seguintes especificações e restrições:

? O saldo não pode ser negativo (saldo >= 0,

sempre);

? Os depósitos e os saques devem ser

atendidos por ordem de chegada;

? Os clientes de saque devem seguir uma

política de fila, onde o primeiro a chegar

deve ser o primeiro a ser atendido – FIFO;

? Os clientes devem trabalhar com os valores

de 100, 200 e 300 reais, tanto pra saque,

como pra depósito;

? O intervalo entre as transações deve ser de

2 segundos (2000 ms);

? A fila de espera de saque não tem tamanho

definido e não há fila para depósito;

? Os clientes de saque devem “dormir”

quando estiverem esperando na fila sua vez.

Implementação

O projeto foi desenvolvido utilizando a linguagem de programação C#, com o

ambiente de desenvolvimento Visual Studio 2010 sobre uma aplicação Console. Os

mecanismos de sincronização foram os Monitores nativos da própria linguagem

(Monitor) e os métodos de controle das condições de sincronização Wait(lock) e

PulseAll(lock) (análogos ao wait() e notifyAll() de Java, respectivamente) foram

adotados.

O projeto ContaPoupanca foi criado, juntamente com as classes:

? Banco: contém os métodos base de sincronização dos clientes de saque

(Sacar) e depósito (Depositar), juntamente com o métodos de adição de cliente

sacador na fila definida na classe, através da seguinte linha de código:

private Queue<ClienteSaque> filaSaque = new Queue<ClienteSaque>();

? ClienteDeposito: com construtor implementado e método Run, que chama o

método Depositar da instância de Banco (banco), presente em cada cliente.

? ClienteSaque: com construtor implementado e método Run, que chama o

método AddClienteSaque, passando como parâmetro o cliente atual, e

método Sacar presente da instância de Banco (banco) presente em cada

cliente.

? Program (Principal): contém a Main e foi onde os mecanismos de criação das

Threads foi implementado.

? Tipo: enum que contém cada tipo de cliente que possa vir a ser criado, tanto

em relação a transação (Saque ou Depósito), como em relação aos valores

(100, 200 e 300 reais). A saber:

public enum Tipo

{

Saque100 = 0,

Saque200 = 1,

Saque300 = 2,

Deposito100 = 3,

Deposito200 = 4,

Deposito300 = 5

}

? RandomGerador: contém métodos de geração aleatória de nome das

Threads, tipo das Threas, obedecendo ao enum Tipo e valores (100, 200 ou

300);

Mecanismo de Sincronização

A classe Banco contém os métodos sincronizados, ilustrados abaixo, que controlam o

recurso de saldo da conta poupança, Sacar – referente ao controle dos ClienteSaque,

e Depositar – referente ao controle dos ClienteDeposito.

class Banco{

public void Sacar(int valor)

{

Monitor.Enter(lockObj);

try

{

//Enquanto o valor de saque for maior que o valor de

//saldo disponível, ou saldo negativo, faça a thread requerente

//dormir; se condição foi atendida, acorde as threads

while ( (valor > saldo || saldo <= 0))

{

Monitor.Wait(lockObj);

Monitor.PulseAll(lockObj);

}

...

Baixar como (para membros premium)  txt (11.7 Kb)   pdf (60.1 Kb)   docx (19.2 Kb)  
Continuar por mais 6 páginas »
Disponível apenas no TrabalhosGratuitos.com