Do que trata o artigo

Ao mesmo instante em que podemos utilizar o computador para acessar uma página na internet, podemos também utilizá-lo para ouvir músicas, assistir vídeos e assim outras tarefas sempre estarão sendo executadas. Tarefas tais como um software antivírus inspecionando os arquivos do sistema em busca de algum código malicioso que possa danificar alguma coisa ou um software de mensagem instantânea poderá ser notificado acerca de alguma mensagem de algum contato de sua lista. Isto é possível somente em função do conceito de paralelismo que permite que o sistema operacional execute suas diversas funções de forma simultânea. Este artigo abordará os novos recursos de programação paralela que o Microsoft .Net Framework 4.0 oferece.

Para que serve

O objetivo da programação paralela é permitir que mais de uma tarefa seja realizada em um dado instante. Os novos recursos introduzidos simplificam o uso do paralelismo, fazendo que com aja um desempenho maior de sistemas, de subrotinas, com um grau de complexidade menor..

Em que situação o tema é útil

Em situações que é necessário gerar maior interatividade e concorrência de tarefas em um sistema a fim de melhorar o tempo de reposta de uma aplicação. Por exemplo, uma solução que extrai informações a partir de um Web Service ou um arquivo de texto e que deva processar estes dados e em seguida persistir estas informações em alguma outra fonte de dados como, por exemplo, outro banco de dados. É possível empregar estes conceitos para que à medida que os dados sejam extraídos desta fonte primária, estes mesmos dados sejam processados e persistidos na fonte secundária, a grande vantagem é que não é necessário aguardar o término da primeira atividade para iniciar a segunda, ambas podem ser executadas de forma sincronizada e concorrente.

Resumo do DevMan

Neste artigo é apresentado alguns novos recursos de programação paralela que o .Net Framework 4.0 possui. Iniciaremos com uma parte teórica onde descreveremos conceitualmente o funcionamento deste modelo de programação e apresentaremos as vantagens e desvantagens que ocorrem na programação paralela. Em seguida apresentaremos os novos recursos oferecidos pelo .Net com pequenos exemplos de utilização.

Os primeiros sistemas operacionais não ofereciam suporte à execução paralela de programas, desta forma podiam executar apenas um programa por vez e caso estivessem enviando dados para algum dispositivo, como uma impressora, os computadores não disponibilizavam outros recursos aos seus usuários. Estes sistemas operacionais ficaram conhecidos como mono tarefa. De fato existia apenas uma linha de execução através de todo o sistema que incluía o sistema operacional e algum outro aplicativo em execução. O problema em se ter apenas uma linha de execução era que tarefas longas podiam impedir que outras tarefas fossem executadas, por exemplo, nos dias do Windows de 16-bits era muito comum para uma aplicação que estava imprimindo um documento paralisar todo o sistema e em algumas situações as aplicações podiam ter algum tipo de defeito que resultava em um laço de repetição infinito que interrompia a execução de todo o sistema. Neste momento o usuário não tinha muitas escolhas a serem feitas a não ser reiniciar seu microcomputador e é bem verdade que estas situações ocorrem ainda em nossos dias. Com base nestas limitações, evoluções ocorreram e os sistemas operacionais passaram a suportar execução paralela, o que veio ser conhecido como multi-threading, no onde o processador passa a dividir seu tempo entre vários processos concorrentes. Um ponto importante aqui é que quando processadores de um núcleo apenas eram usados, o usuário tinha a impressão de que várias tarefas estavam sendo realizadas ao mesmo tempo, entretanto como o processador podia executar apenas uma instrução por vez, o sistema operacional através de seus algorítmos era encarregado de determinar um tempo específico de processamento a cada processo e assim parecia-se que tudo estava sendo executado ao mesmo tempo. O sistema operacional dividia o tempo do processador entre todos os processos concorrentes e tinha-se uma simultaneidade virtual. Agora existem processadores com mais de um núcleo, o que garante um real paralelismo nas aplicações.

Processos e Threads

Para cada aplicação executada dentro do sistema operacional é criado um processo, e para cada processo é criada uma unidade de processamento que é denominada de thread principal. Uma thread pode ser definida como uma unidade de processamento que permite a um processo dividir-se em outras partes, onde outras tarefas serão executadas de forma concorrente. A partir da thread principal é permitido aos processos criar mais threads. É possível visualizar a quantidade de thread que um processo utiliza através do gerenciador de tarefas do Windows. Os processos possuem uma estrutura de recursos que é gerenciada pelo sistema operacional, nessa estrutura é mantido o seu estado, critérios de segurança, memória e demais elementos que os compõem. As threads possuem também uma estrutura de objetos de controle e recursos individuais que são criados para cada nova thread, estes elementos são:

...
Quer ler esse conteúdo completo? Tenha acesso completo