P ROGRAMACIÓN
MULTIHILOS
C# .NET
Conceptos, características, ventajas y ejemplos
Albin N. Lopez (2024-1116)
Threading · Concurrency · Parallelism · Synchronization
INTRODUCCIÓN
¿Qué es la
Programación Multihilos?
Permite ejecutar varias tareas al mismo tiempo dentro de un
mismo programa.
Cada tarea se ejecuta en un hilo (thread), lo que mejora el
rendimiento y la eficiencia de las aplicaciones modernas. MAYOR RENDIMIENTO
MEJOR EFICIENCIA
MEJOR EXPERIENCIA
PROCESOS
Definición de Procesos
Un proceso es un programa en ejecución dentro del sistema operativo.
Espacio propio de memoria Recursos asignados Uno o varios hilos
Cada proceso tiene su propia área aislada de El proceso puede contener múltiples threads de
Archivos abiertos, handles del SO, descriptores
RAM ejecución
HILOS / THREADS
Definición de Hilos
Un hilo (thread) es la unidad más pequeña de ejecución dentro de un proceso.
Thread 1
Thread 2
Thread 3
✓ Memoria compartida | ✓ Ejecución simultánea | ✓ Más ligero que un proceso
MULTIHILOS
Programación
Multihilos
×2-8 N
Ganancia de rendimiento típica Hilos en paralelo por CPU core
Permite que un programa ejecute varios hilos al mismo
tiempo.
Mejora la velocidad, el rendimiento y la capacidad de SINGLE THREAD
respuesta de las aplicaciones.
MULTI-THREAD
CONCEPTOS
Conceptos Fundamentales
Concurrencia Paralelismo Sincronización
Múltiples tareas progresan al mismo tiempo Ejecución simultánea real en múltiples Coordinación de hilos para acceso ordenado
compartiendo recursos. núcleos del CPU. a recursos compartidos.
Race Condition Lock / Mutex Deadlock
Error cuando dos hilos acceden al mismo Mecanismo que garantiza acceso exclusivo a Bloqueo mutuo donde dos hilos esperan al
dato sin control. un recurso. otro indefinidamente.
VENTAJAS
Ventajas
Mejor uso del CPU
Los núcleos trabajan en paralelo sin tiempos muertos.
Mayor rendimiento
Las tareas se completan en menos tiempo total.
Múltiples tareas simultáneas
Descarga en segundo plano sin bloquear la UI.
Mejor experiencia de usuario
La app responde al usuario mientras trabaja en segundo plano.
DESVENTAJAS
Desventajas
Mayor complejidad en el desarrollo
El código multihilo es más difícil de depurar y mantener.
Problemas de sincronización
Acceso concurrente a datos compartidos puede generar bugs.
Condiciones de carrera
Resultados inesperados cuando los hilos compiten por recursos.
Riesgo de deadlocks
Hilos bloqueados mutuamente que nunca liberan los recursos.
CÓDIGO C#
Ejemplo: Primer Hilo
[Link]
1 using System;
2 using [Link];
3
4 class Program
5 {
6 static void Tarea()
7 {
8 [Link]("Hilo ejecutándose");
9 }
10
11 static void Main()
12 {
13 Thread hilo = new Thread(Tarea);
14 [Link]();
15 }
16 }
CÓDIGO C#
Ejemplo: Múltiples Hilos
[Link]
¿Cómo funciona?
1 using System;
2 using [Link];
3
4 class Program Se definen dos métodos: Trabajo1 y
5 { Trabajo2.
6 static void Trabajo1()
7 {
Cada uno imprime mensajes en un loop de 5
8 for(int i=0;i<5;i++)
iteraciones.
9 [Link]("Hilo 1\n");
10 }
11 static void Trabajo2()
Se crean dos objetos Thread apuntando a
12 {
cada método.
13 for(int i=0;i<5;i++)
14 [Link]("Hilo 2\n");
15 } [Link]() y [Link]() lanzan los hilos en
16 static void Main() paralelo.
17 {
18 Thread t1=new Thread(Trabajo1);
19 Thread t2=new Thread(Trabajo2); El orden de salida no está garantizado —
20 [Link](); [Link](); depende del scheduler del SO.
21 }
22 }
C O N C L U S I Ó N
Programación Multihilos
Mejora el rendimiento de las aplicaciones al ejecutar tareas en paralelo.
Requiere correcta gestión de sincronización para evitar errores.
Threading Concurrency Parallelism C# .NET