Portada » Informática » Conceptos Fundamentales: Paradigmas, Concurrencia y Coordinación en Programación
Un paradigma es un conjunto de características comunes a varios lenguajes o que diferencian un cierto lenguaje de los demás. Una metodología no es un paradigma.
Se agrupan en subconjuntos:
Podemos clasificar los paradigmas en función de su distancia al HW.
La concurrencia se refiere a las notaciones y técnicas usadas para expresar en programas la posibilidad potencial de ejecución simultánea de varios algoritmos y resolver los problemas de sincronización y comunicación derivados de dicha implementación.
synchronized
).Los procesos son entidades independientes para el Sistema Operativo (SO), tienen su propia memoria, código y montículo. Los hilos comparten memoria, código y montículo. Lo único que no comparten es el puntero de instrucción.
Son una herramienta de modelado muy efectiva para la representación y el análisis de procesos concurrentes. Las redes son grafos orientados con dos clases de nodos: lugares y transiciones. Extensiones:
La coordinación es el conjunto de secuencias ejecutadas simultáneamente que cooperan para un objetivo común. Es la clave para un programa concurrente. Se consigue usando variables compartidas.
Permite el acceso a un solo hilo a la vez. Es utilizada con synchronized
para conseguir la entrada ordenada de los hilos.
Cuando varios hilos compiten por acceder al procesador o a las variables compartidas y su resultado depende del orden de ejecución de los hilos.
Fragmento de código donde la corrección de un programa se ve comprometida por el uso de variables compartidas. La solución es asegurar la ejecución en exclusión mutua de toda SC sobre una misma variable compartida.
Nos permiten acceder a un recurso (SC) en exclusión mutua.
Lock
) y «quitar» (Unlock
) el cerrojo se indican expresamente. Se definen con ReentrantLock
.synchronized
.Se usa para resolver problemas de comunicación. Un objeto Condition
está ligado a un objeto Lock
. Se puede crear una Condition
invocando el método newCondition()
sobre un objeto Lock
.
El concepto thread-safe se refiere a cuando el comportamiento de un programa no se ve interferido o modificado por otros hilos de forma concurrente, gracias al uso de la exclusión mutua sobre variables compartidas para resolver problemas de condiciones de carrera.
public class Suma extends Thread{
private int numero;
public synchronized int getNumero(){
return numero++;
}
}