terça-feira, 29 de abril de 2008

Visão geral de threads em C#

Neste blog existem alguns posts sobre threads em C#, que ensinam como criar uma thread, como passar parametro na inicialização de uma thread etc...
Vou tentar nos proximos posts, da uma visão geral sobre threads e mostrar alguns pontos importantes do funcionamento.
Vou começar dando um simples exemplo de como funciona.

Temos no C#, como em outras linguagens, suporte a execução paralela de codigo, através de multithreading.
Uma thread é "quase um outro programa".
Ela é uma caminho de execução indepentende e que pode rodar ao mesmo tempo que outras threads.
Um programa em C# começa com uma thread principal que é criada automaticamente pelo CLR do .NET Framework e pelo sistema operacional é a thread("main")
Então o programa se torna multithreading a partir da criação de outras threads a partir dessa thread principal.

Vou colocar um exemplo de codigo para ilustrar como funciona a thread e que elas compartilham recursos em comun, no caso o console.


using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;


namespace ThreadTest
{
class Program
{
static void Main(string[] args)
{
Thread minhaThread = new
Thread(new ThreadStart(Escreve));
minhaThread.Start();
for (int i = 0; i < 1000; i++)
{
Console.Write("_");
}
Console.ReadLine();
}
public static void Escreve()
{
for (int i = 0; i < 1000; i++)
{
Console.Write("-");
}
}
}

}

A thread principal("main"), cria uma nova thread que irá executar a função
Escreve(), esta função mostrará na tela o hifen"-"
Ao mesmo tempo que isso
ocorre, a thread principal escreve na tela "_"(underline).

Execute o programa e veja como ele irá se comportar.
Note que
repetindo a execução varias vezes, o comportamento não se repete.

Ficaremos por aqui com esse exemplo, para que você possa visualizar como uma thread funciona, e brincar com as possibilidades
No proximo post tentarei explicar um pouco mais sobre como compartilhar variaveis entre diferentes threads.

0 comentários:

 
João Bosco Seixas