Sobes.tech
Junior

¿Qué es la concurrencia en el contexto de la multitarea?

sobes.tech AI

Respuesta de la IA

La concurrencia es la capacidad de un sistema para realizar varias tareas al mismo tiempo, que pueden compartir recursos comunes. En el contexto de la multitarea, esto se logra mediante la ejecución de múltiples hilos, cada uno de los cuales puede procesar su propia tarea.

Ejemplos de mecanismos que logran la concurrencia en C#:

  • Clase Thread: Creación y gestión directa de hilos.
    // Crear un nuevo hilo
    Thread newThread = new Thread(() => {
        // Código que se ejecuta en el nuevo hilo
    });
    newThread.Start(); // Iniciar el hilo
    
  • Pool de hilos (ThreadPool): Reutilización de hilos para reducir la sobrecarga de creación y destrucción.
    // Encolar una tarea en el pool de hilos
    ThreadPool.QueueUserWorkItem((state) => {
        // Código que se ejecuta en un hilo del pool
    });
    
  • Tareas (Task): Una abstracción de nivel superior sobre los hilos, parte de la Biblioteca de Tareas Paralelas (TPL). Es más conveniente para operaciones asincrónicas.
    // Crear y ejecutar una tarea
    Task.Run(() => {
        // Código que se ejecuta en la tarea
    });
    

La concurrencia puede causar problemas al acceder a datos compartidos (condiciones de carrera, interbloqueos), requiriendo el uso de mecanismos de sincronización como:

  • lock
  • Mutex
  • Semaphore
  • Monitor