Publicado em

Classe Thread em C#

Partilhar:

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

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:

  1. Deadlocks: Situações em que dois ou mais threads esperam indefinidamente um pelo outro.
  2. Race Conditions: Quando vários threads tentam acessar e modificar uma variável ao mesmo tempo.
  3. Sincronização: Uso de mecanismos como lock, Monitor e Mutex 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.

Happy coding!