Algoritmos y programación 3 - cátedra Fontela Concurrencia.

14
Algoritmos y programación 3 - cátedra Fontela Concurrencia

Transcript of Algoritmos y programación 3 - cátedra Fontela Concurrencia.

Page 1: Algoritmos y programación 3 - cátedra Fontela Concurrencia.

Algoritmos y programación 3 - cátedra Fontela

Concurrencia

Page 2: Algoritmos y programación 3 - cátedra Fontela Concurrencia.

A3F

Concurrencia La Real Academia Española dice:

Concurrencia.

1. f. Acción y efecto de concurrir.

2. f. Conjunto de personas que asisten a un acto o reunión.

3. f. Coincidencia, concurso simultáneo de varias circunstancias.

En computación: Capacidad de los sistemas de realizar mas de una tarea al mismo

tiempo

Page 3: Algoritmos y programación 3 - cátedra Fontela Concurrencia.

A3F

Concurrencia

Proceso Programa en ejecución Tiene recursos propios

Hilo Subproceso Utiliza los recursos del proceso

Page 4: Algoritmos y programación 3 - cátedra Fontela Concurrencia.

A3F

Tipos de concurrencia

Multiprogramación Un solo procesador

Multiprocesamieto Mas de un procesador

Computación distribuida Los procesos corren en máquinas distintas

Page 5: Algoritmos y programación 3 - cátedra Fontela Concurrencia.

A3F

Ademas...

Varios procesos en paralelo Ej: Varias instancias de un programa Comparten recursos externos (archivos)

Varios hilos (multithreading) Dentro del mismo proceso, mas de un hilo Comparten recursos externos e internos (objetos,

clases)

Page 6: Algoritmos y programación 3 - cátedra Fontela Concurrencia.

A3F

Usos

Optimización de tiempos Operaciones de E/S son lentas Hago cosas “en background” mientras el usuario

sigue trabajando. Ejemplo, eclipse compila todo el tiempo sin que yo tenga que dejar de escribir

Diseño

Page 7: Algoritmos y programación 3 - cátedra Fontela Concurrencia.

A3F

Concurrencia en Java

Interfaz Runnable y clase Thread

Manejada por la JVM Scheduler basado en prioridades

Page 8: Algoritmos y programación 3 - cátedra Fontela Concurrencia.

A3F

Concurrencia en Java

class Hilo extends Thread {

public void run() {//codigo del hilo

}}

...

Hilo unHilo = new Hilo();

unHilo.start();//start invoca a run()

...

Page 9: Algoritmos y programación 3 - cátedra Fontela Concurrencia.

A3F

Concurrencia en Java

class Hilo implements Runnable {

public void run() {//codigo del hilo

}}

...

Thread t = new Thread(new Hilo());

t.start();

...

Page 10: Algoritmos y programación 3 - cátedra Fontela Concurrencia.

A3F

Concurrencia en C#

public class Hilo {

public void run() {

//codigo del hilo}

}

...

Hilo unHilo = new Hilo();

Thread t = new Thread (new ThreadStart(unHilo.run));

t.start();

Page 11: Algoritmos y programación 3 - cátedra Fontela Concurrencia.

A3F

Problemas de la concurrencia

No-determinismo No tenemos control sobre el flujo de ejecución

Recursos críticos No pueden ser accedidos por varios objetos al

mismo tiempo Necesitamos exclusión mutua

Semaforos Cerrojos Monitores

Page 12: Algoritmos y programación 3 - cátedra Fontela Concurrencia.

A3F

Problemas de la concurrencia

Deadlock (interbloqueo)

Page 13: Algoritmos y programación 3 - cátedra Fontela Concurrencia.

A3F

Problemas de la concurrencia

Starvation (inanición) Proceso que nunca obtiene recursos

Inversion de prioridades

Page 14: Algoritmos y programación 3 - cátedra Fontela Concurrencia.

A3F

Ejercicios