Conceptos Clave
Hilos y Procesos
Problemas de Concurrencia
Herramientas
Casos de uso
100

¿Cuál es la diferencia entre concurrencia y paralelismo?

Concurrencia simula múltiples tareas a la vez (aunque no necesariamente al mismo tiempo), mientras que el paralelismo ejecuta múltiples tareas al mismo tiempo usando múltiples núcleos.

100

¿Qué comparten los hilos dentro de un mismo proceso?

Espacio de memoria y recursos.

100

¿Qué es una condición de carrera?

Cuando múltiples hilos acceden/modifican un recurso compartido sin sincronización, el resultado depende del orden de ejecución.

100

¿Qué hace lock.acquire()?

Solicita el lock. Si ya está ocupado, el hilo se bloquea hasta obtenerlo.

100

En un aeropuerto, varias personas pueden leer la pantalla de vuelos, pero solo un trabajador puede actualizar la información. ¿Qué patrón representa?

Patrón lector-escritor.

200

¿Qué es una tarea I/O-bound?

Es una tarea cuyo rendimiento está limitado por operaciones de entrada/salida, no por el CPU.

200

¿Cuál es la ventaja principal de los hilos frente a los procesos?

Son más ligeros y se crean más rápidamente.

200

¿Qué es un interbloqueo (deadlock)?

Cuando dos o más procesos esperan indefinidamente recursos que otro tiene bloqueado.

200

¿Cuál es el propósito de condition.wait()?

Libera el lock y bloquea el hilo hasta que otro hilo llame a notify() o notify_all().

200

Una cafetería tiene una sola caja y 10 clientes. Solo uno puede pagar a la vez. ¿Qué concepto representa esto?

Zona crítica con exclusión mutua (mutex).

300

¿Qué hace el Global Interpreter Lock (GIL) en Python?

Impide que múltiples hilos ejecuten código Python al mismo tiempo, incluso en CPUs multinúcleo.

300

¿Qué ocurre si un hilo falla dentro de un proceso?

Puede afectar a otros hilos del mismo proceso.

300

¿Qué es la inanición (starvation)?

Cuando un hilo o proceso nunca accede a un recurso porque otros acaparan continuamente su uso.

300

¿Cuál es el error en este código y qué lo soluciona?

lock = Lock()
with lock:
    lock.acquire()

Ya se adquirió el lock con with. No se debe llamar a acquire() dentro del with.

300

Dos procesos están activos. Cada uno ha adquirido acceso exclusivo a un recurso distinto. Ambos necesitan acceder al recurso del otro para continuar. El sistema no presenta errores, pero tampoco progresa. ¿Cuál es el problema?

Interbloqueo (deadlock).

400

¿Qué técnica permite que varias tareas se realicen cooperativamente, cediendo el control del CPU voluntariamente?

Multitarea cooperativa.

400

Menciona dos diferencias clave entre threading y multiprocessing en Python.

threading usa hilos y comparte memoria, ideal para I/O-bound. multiprocessing usa procesos separados, ideal para CPU-bound.

400

Da un ejemplo de una zona crítica.

Una variable compartida que se modifica dentro de un bucle por varios hilos.

400

¿Qué hace este fragmento de código? ¿Y a qué patrón corresponde?

buffer.put(item) seguido de buffer.get()

Implementa el patrón Productor-Consumidor usando una cola como buffer compartido.

400

Un chef prepara hamburguesas (productor) y otro las sirve al cliente (consumidor). Ambos comparten una bandeja donde caben 5 hamburguesas. ¿Qué técnica se usa?

Semáforos y buffer limitado en el patrón productor-consumidor.

500

¿Qué recurso se usa en Python para aprovechar múltiples núcleos para tareas CPU-bound?

La librería multiprocessing.

500

¿Qué tipo de tarea (CPU-bound o I/O-bound) es más adecuada para threading en Python y por qué?

I/O-bound, porque el GIL se libera durante operaciones de entrada/salida.

500

¿Qué tipo de patrón es el lector-escritor?

Un patrón de sincronización donde múltiples lectores acceden al recurso simultáneamente, pero la escritura requiere acceso exclusivo.

500

En Python, ¿para qué tipo de programación es obligatorio usar if __name__ == "__main__" al definir el punto de entrada del programa, y por qué es importante incluirlo?

Es obligatorio al usar la librería multiprocessing, ya que evita que los procesos hijos vuelvan a ejecutar todo el módulo principal al ser importado, lo que causaría un bucle infinito de creación de procesos.

500

Un servidor procesa solicitudes de APIs de un sistema importante, donde algunas tareas son urgentes.Se ha reportado que tareas administrativas como realizar respaldos o guardar logs no se están ejecutando. ¿Qué problema se está generando en este escenario?

Inanición (starvation).

M
e
n
u