Saltar al contenido principal
Publicado el

Clase Thread en C#

Compartir:

Introducción

La programación multihilo es una técnica que permite la ejecución concurrente de dos o más partes de un programa para maximizar la utilización de la CPU. En C#, Thread es la clase base para crear y trabajar con hilos.

Características de la Clase Thread

La clase Thread, que forma parte del espacio de nombres System.Threading, ofrece una serie de funcionalidades para crear, controlar y obtener información sobre hilos:

  • Creación de Hilos: Con la clase Thread, es posible iniciar una tarea en segundo plano.
  • Control: Permite pausar, reanudar o terminar un hilo.
  • Información: Proporciona datos sobre el estado actual del hilo, como si está en ejecución, suspendido, terminado, etc.
  • Prioridad: La prioridad de un hilo puede ajustarse, lo que afecta al orden de ejecución de los hilos.

Métodos Comunes

A continuación se presentan algunos de los métodos más utilizados:

Thread.Start()

  • Inicia la ejecución del hilo.

Thread.Join()

  • Bloquea el hilo que realiza la llamada hasta que el hilo en el que se llama termina su ejecución. Útil para garantizar que un hilo finalice antes de que otro comience.

Thread.Sleep(int milisegundos)

  • Pausa el hilo en ejecución durante el número de milisegundos especificado.

Ejemplo Ilustrativo

El siguiente ejemplo ilustra la creación y ejecución de un hilo, así como el control del flujo de ejecución entre dos hilos.

using System;
using System.Threading;

namespace Ejemplos {
  class DemoHilo {
    private Thread nuevoHilo;

    public void Iniciar() {
      nuevoHilo = new Thread(TareaSecundaria);
      nuevoHilo.Start();

      for (int indice = 1; indice <= 5; indice++) {
        Console.WriteLine($"Método Iniciar() #{indice}");
        Thread.Sleep(1000);
      }

      Console.WriteLine("La tarea Iniciar() ha concluido.");

      nuevoHilo.Join();

      Console.WriteLine("La tarea TareaSecundaria() ha concluido.");
    }

    private void TareaSecundaria() {
      for (int indice = 1; indice <= 10; indice++) {
        Console.WriteLine($"TareaSecundaria() #{indice}");
        Thread.Sleep(1000);
      }
    }
  }
}

Consideraciones

Al trabajar con múltiples hilos, es fundamental tener en cuenta algunas consideraciones:

  1. Deadlocks: Situaciones en las que dos o más hilos se esperan mutuamente de forma indefinida.
  2. Race Conditions: Cuando varios hilos intentan acceder y modificar una variable al mismo tiempo.
  3. Sincronización: Uso de mecanismos como lock, Monitor y Mutex para garantizar que los recursos sean accedidos por un hilo a la vez.

Conclusión

La programación multihilo puede proporcionar aplicaciones más rápidas y con mayor capacidad de respuesta. Sin embargo, conlleva su propio conjunto de desafíos. Afortunadamente, C# ofrece herramientas robustas, como la clase Thread, para ayudar a los desarrolladores a afrontar estos desafíos.

Happy coding!