Criar threads e usa-las não é uma tarefa complicada, porém o uso deste recurso introduz algumas dificuldades que não são enfrentadas pelo programador quando o mesmo utiliza a programação seqüencial.
Dizer que um programa é multithread é o mesmo que dizer que este programa possui vários pontos de execução, sendo um ponto para cada thread. Pra facilitar a compreensão é como se existisse um processador para cada thread, assim, ao criar uma thread você pode imaginar-se instanciando um novo processador para fazer o trabalho que você está dando para aquela thread fazer.
Eu acredito muito que o leitor não possui um super computador com dezenas de processadores, sendo assim, melhor manter o exemplo acima apenas para fins de compreensão do que realmente é uma thread ok?(Isso foi apenas um momento auto-ajuda, afinal de contas auto-ajuda vende muito mais que livros de informática. :D)
Na verdade o Sistema Operacional com seu algoritmo de escalonamento de processos, pede ao processador para fazer uma pequena parte do trabalho de cada vez e trocando de uma thread para outra e de um processo para outro tão rapidamente que temos a impressão de possuir vários processadores. Na verdade todo o processamento é feito em cima das threads, todo processo tem pelo menos uma thread, sendo assim,quando digo que o processador troca de um processo para outro é simplesmente para lembrar-lhe que temos threads de outros processos sendo executados o tempo todo.
Podemos dizer que os processos com suas respectivas threads concorrem ao processador e por essa e por outras o termo concorrência é tão usado ao se falar de threads.
Mas por que usar multithreads? Para que concorrência?
Caso você tenha um micro ou um servidor multiprocessado em mente já deve ter surgido imediatamente em sua cabeça a idéia de usar os recursos dos vários processadores que possui, afinal de contas para que tanto processador se não para aproveitar os mesmos.
Outra coisa seria utilizar as threads para trabalhar com dispositivos lentos (comparados ao nosso nobre processador) como impressoras, rede, discos e outros. Assim nossa thread vai fazer esse serviço de esperar o retorno dos nossos dispositivos “lesmas” enquanto nosso programa principal faz coisas mais importantes.
Agora, uma coisa é certa, a razão é sempre dos usuários. Mediante isso por que não pensar neles? Então por que deixar aquela tela travada para que o coitado fique abrindo o gerenciador de tarefas e matando o malvado processo que teima em travar todas as vezes que ele pede a geração de um determinado relatório ou uma consulta um pouco mais rebuscada, ou coisa do tipo? Neste caso a thread seria uma aliada. Ela iria trabalhar na consulta e a interface gráfica não seria substituída por uma tela branca travada e sem vida.
Um caso um pouco mais raro para a grande maioria dos desenvolvedores seria o uso na construção de uma aplicação distribuída. Imagine-se criando o seu próprio IIS, receber as requisições do usuário e então criar uma thread para cada requisição e deixa-la atende-lo. Obs.: Dei um exemplo extremamente simplista do trabalho do IIS, meramente ilustrativo.
Então é mais ou menos isso, sei que fui simplista, mas... pra que complicar? O objetivo foi entender o conceito. Logo virei com a segunda parte dessa conversa sobre threads. Como cria-las e controla-las.
Comentários e críticas são muito bem vindas.
Abraços!
//Cleydson
Technorati Marcas:
Thread,
Multithread
Antes de começar a ler: Saiba que o que está escrito aqui é para quem está começando agora com essa história de virtualização.
Tendo isso em mente vamos lá. Se você não quer instalar o Linux, ou qualquer outro SO, em uma outra partição do seu HD, mas está querendo testar algo ou simplesmente conhecer mais sobre diversos SOs. Você pode virtualizar.
Este é um termo interessante e muito útil, você não precisa criar Dual Boot, ou seja, não precisa instalar dois sistemas operacionais no seu micro e decidir qual vai usar na hora de iniciar o computador. Pode instalar o SO preferido ou o mais usado, e fatidicamente o que você tem mais familiaridade, depois disso baixar um software no estilo VMWare ou Virtual PC e então instalar o SO no qual deseja fazer seus testes; com o auxílio deste software.
O que estes softwares fazem é criar um computador virtual com memória RAM, processador, HD, tudo! Você consegue ver o boot sendo dado neste computador virtual, bem interessante.
Mas se você não quer, ou não sabe, ou está com preguiça de instalar um Linux, baixe um VMWare player. Nessa versão do VMWare você só pode abrir imagens de SOs previamente instalados e configurados, mas funciona muito bem. Então baixe uma imagem de um linux ou FreeBSD ou qualquer outro SO que queira se aventurar. Depois disso é só descompactar e abrir a imagem com o VMWare player. Você tem um SO novinho em folha e configurado por caras que já conhecem melhor o dito cujo. Assim você pode estragá-lo à vontade..., o HD que você vai ver dentro desse SO será um arquivo que simula um disco e... Bom.
Em suma, na pior das hipóteses você terá de descompactar a imagem novamente e abri-la pelo VM player para criar um novo Micro virtual.
Um Abraço!
//Cleydson