Threads – VB.NET

Estava procurando estes dias no Google algo referente à Thread par VB.NET e achei um artigo no CodeProject que é muito simples e fácil de entender.
Para quem não sabe a definição de Thread, a baixo tem algumas definições bacanas sobre Thread:  

Um pequeno programa que trabalha como um sub-sistema independente de um programa maior, executando alguma tarefa específica. Um programa dividido em vários threads pode rodar mais rápido que um programa monolítico, pois várias tarefas podem ser executadas simultaneamente. Os vários threads de um programa podem trocar dados entre sí e compartilhar o mesmo espaço de memória e os mesmos recursos do sistema.

Para o programador, existem vantagens e desvantagens em dividir um programa em vários threads. Por um lado isso facilita o desenvolvimento, pois é possível desenvolver o programa em módulos, testando-os isoladamente, ao invés de escrever um único bloco de código. Mas, por outro lado, com vários threads o trabalho torna-se mais complexo, devido à interação entre eles.

Existem diferenças na maneira como os sistemas operacionais executam processos e threads. Por exemplo, o Windows têm mais facilidade para gerenciar programas com apenas um processo e vários threads, do que com vários processos e poucos threads, pois Windows o tempo para criar um processo e alternar entre eles é muito grande. O Linux e outros sistemas baseados no Unix por sua vez é capaz de criar novos processos muito rápido, o que explica o fato de alguns aplicativos, como por exemplo o Apache, rodarem muito mais rápido no Linux do que no Windows, ao serem portados para ele. Porém, ao serem alterados, os mesmos programas podem apresentar um desempenho semelhante nos dois sistemas. É o que a equipe do apache vem procurando fazer nas versões atuais do programa.

Fontes:
Alan Machado