- Autor
- Nome
- Nelson Silva
- Social
Introdução
A programação multithread é uma técnica que permite a execução concorrente de duas ou mais partes de um programa para a máxima utilização da CPU. Em C#, a Thread
é a classe base para criar e trabalhar com threads.
- Características da Classe Thread
- Métodos Comuns
- Thread.Start()
- Thread.Join()
- Thread.Sleep(int milissegundos)
- Exemplo Ilustrativo
- Considerações
Características da Classe Thread
A classe Thread
, que faz parte do namespace System.Threading
, oferece uma série de funcionalidades para criar, controlar e obter informações sobre threads:
- Criação de Threads: Com a classe
Thread
, é possível iniciar uma tarefa em segundo plano. - Controlo: Possibilita pausar, retomar ou terminar uma thread.
- Informações: Fornece dados sobre o estado atual da thread, como se está a ser executada, suspensa, terminada, etc.
- Prioridade: A prioridade de um thread pode ser ajustada, o que afeta a ordem de execução dos threads.
Métodos Comuns
Aqui estão alguns dos métodos mais usados:
Thread.Start()
- Inicia a execução do thread.
Thread.Join()
- Bloqueia o thread de chamada até que o thread em que é chamado termine a sua execução. Útil para garantir que um thread termine antes de outro começar.
Thread.Sleep(int milissegundos)
- Pausa o thread em execução pelo número especificado de milissegundos.
Exemplo Ilustrativo
O exemplo a seguir ilustra a criação e execução de um thread, bem como o controlo do fluxo de execução entre dois threads.
using System;
using System.Threading;
namespace Exemplos {
class DemonstracaoThread {
private Thread novoThread;
public void Iniciar() {
novoThread = new Thread(TarefaSecundaria);
novoThread.Start();
for (int indice = 1; indice <= 5; indice++) {
Console.WriteLine($"Método Iniciar() #{indice}");
Thread.Sleep(1000);
}
Console.WriteLine("A tarefa Iniciar() concluiu.");
novoThread.Join();
Console.WriteLine("A tarefa TarefaSecundaria() concluiu.");
}
private void TarefaSecundaria() {
for (int indice = 1; indice <= 10; indice++) {
Console.WriteLine($"TarefaSecundaria() #{indice}");
Thread.Sleep(1000);
}
}
}
}
Considerações
Quando se trabalha com múltiplos threads, é fundamental ter em mente algumas considerações:
- Deadlocks: Situações em que dois ou mais threads esperam indefinidamente um pelo outro.
- Race Conditions: Quando vários threads tentam acessar e modificar uma variável ao mesmo tempo.
- Sincronização: Uso de mecanismos como
lock
,Monitor
eMutex
para garantir que os recursos sejam acessados por um thread de cada vez.
Conclusão
A programação multithread pode proporcionar aplicações mais rápidas e responsivas. No entanto, ela vem com a sua própria série de desafios. Felizmente, C# oferece ferramentas robustas, como a classe Thread
, para ajudar os desenvolvedores a enfrentar esses desafios.