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

ATPS Thread

Casos: ATPS Thread. Pesquise 862.000+ trabalhos acadêmicos

Por:   •  19/11/2013  •  2.450 Palavras (10 Páginas)  •  464 Visualizações

Página 1 de 10

Anhanguera Educacional

Sistemas de Informação

Programação Concorrente

Belo Horizonte – 2012

Anhanguera Educacional

Sistemas de Informação

Programação Concorrente

Trabalho apresentado para avaliação na disciplina Programação Concorrente, do curso de Sistemas de Informação, turno noite, da Faculdade Anhanguera de Belo Horizonte ministrado pelo professor Sávio Grossi.

1. Introdução

A Empresa Tranngrisnir logística de transportes responsável pela entrega de produtos de uma série de grandes fornecedores, e responsável por grandes vendas pela internet, mas com capacidade baixa.

Tentando melhorar o ritmo de processamento, a empresa este revendo o processo de atendimento a pedido, que são feitos por telefone ou site sendo esses processos feitos por único software que analisa um de cada vez.

A Equipe interna de Tecnologia da Informação (TI) da Tanngrisnir decidiu abrir uma concorrência no mercado para que diversas empresas apresentem uma solução para melhorar a capacidade de processamento de pedidos. A ideia geral deste trabalho é que seja implementada uma solução concorrente assíncrona para processamentos dos pedidos, sendo criados com agentes baseados em threads nas linguagens C e Java. Será criado um protótipo para avaliar os resultados com o uso de uma ferramenta para alimentar um buffer interno.

2. Programação Concorrente

Foi usada inicialmente na construção de sistemas operacionais. Permite escrever programas que originam processos concorrentes (paralelos) durante a execução, a linguagem oferece boas facilidades de depuração, permite praticar com todos os mecanismos de comunicação e sincronização. È um paradigma de programação para a construção de programas de computador que fazem uso de execução concorrente (simultânea) de várias tarefas computacionais interativas, que podem ser implementadas com programas separados ou como um conjunto de threads criado por um único programa.

2.1. Multiprogramação

Faz com que a CPU fique com vários programas simultaneamente ativos na memória (consiste em dividir a memória em N partições fixas de tamanhos variados) e permite que um programa seja executado enquanto outro espera por E/S. Ela faz a CPU suportar a execução de múltiplos programas independentes. Na visão do SO, a multiprogramação tem a vantagem de melhorar o rendimento de utilização da CPU e dos periféricos. Na visão do usuário tem a vantagem de permitir que ele explore tarefas concorrentes, por exemplo, editar e compilar, concorrentemente com a impressão de um ficheiro. Outra vantagem é a de permitir múltiplos utilizadores concorrentes que, partilhando o tempo do CPU, obtêm assim uma ilusão de que cada um tem um computador dedicado, quando, na verdade o que se tem é o controle, pelo SO, de quais os momentos serão para alternar de um processo para outro. E isto é utilizado no SO Windows e na maioria dos SO’s.

2.2. Thread

Thread, ou linha de execução em português, é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas simultaneamente. O suporte à thread é fornecido pelo próprio sistema operacional (SO), no caso da Kernel-Level Thread (KLT), ou implementada através de uma biblioteca de uma determinada linguagem, no caso de uma User-Level Thread (ULT). Uma linha de execução permite que o usuário de programa, por exemplo, utilize uma funcionalidade do ambiente enquanto outras linhas de execução realizam outros cálculos e operações. Os sistemas que suportam apenas uma única linha de execução são chamados de monothread e aqueles sistemas que suportam múltiplas linhas de execução são chamados de multithread.

3. Agentes baseados em Thread na linguagem C#

using System;

using System.Threading;

using System.Collections;

using System.Collections.Generic;

public class cls_produto

{

public cls_produto()

{

_novoItemEvento = new AutoResetEvent(false);

_fimThread = new ManualResetEvent(false);

_eventoArray = new WaitHandle[2];

_eventoArray[0] = _novoItemEvento;

_eventoArray[1] = _fimThread;

}

private EventWaitHandle _novoItemEvento;

private EventWaitHandle _fimThread;

private WaitHandle[] _eventoArray;

public EventWaitHandle FimThread

{

get { return _fimThread; }

}

public EventWaitHandle NovoItemEvento

{

get { return _novoItemEvento; }

}

public WaitHandle[] EventArray

{

get { return _eventoArray; }

}

}

//-------------------------- Fim propriedades -------------

public class Produtor

{

public Queue<int> _buffer; // Variáveis globais

private cls_produto _produto; // Variáveis globais

//--------------------//-------------------//-------------------

public Produtor(Queue<int> q, cls_produto e)

{

_buffer

...

Baixar como (para membros premium)  txt (19.6 Kb)  
Continuar por mais 9 páginas »
Disponível apenas no TrabalhosGratuitos.com