Post on 22-Nov-2014
description
Threads ó Hilos de ejecución
➢ Una instancia de ejecución en un programa, pero
Programación Multihilo
Threads ó Hilos de ejecución
➢ Una instancia de ejecución en un programa, pero más ligera que un proceso.➢ Con lo que un proceso podría tener varios Threads de ejecución.
Programación Multihilo
Threads ó Hilos de ejecución
➢ Una instancia de ejecución en un programa, pero más ligera que un proceso.➢ Con lo que un proceso podría tener varios Threads de ejecución. ➢ Todos contenidos en él y compartiendo los mismos recursos
Programación Multihilo
Sabemos trabajar con multitarea: Usando fork y exec, ejecutamos varios programas a la vez.
Programación Multihilo
Sabemos trabajar con multitarea: Usando fork y exec, ejecutamos varios programas a la vez. ¿Qué aplicamos si lo que queremos ejecutar son varias funciones a la vez, ó la misma función invocarla varias veces?
Programación Multihilo
Sabemos trabajar con multitarea: Usando fork y exec, ejecutamos varios programas a la vez. ¿Qué aplicamos si lo que queremos ejecutar son varias funciones a la vez, ó la misma función invocarla varias veces? Usaremos Threads, funciones de la librería pthread.
Programación Multihilo
Programación Multihilo
Antes de pasar a un caso de estudio, veamos si estamos de acuerdo con la siguiente afirmación:
Programación Multihilo
Antes de pasar a un caso de estudio, veamos si estamos de acuerdo con la siguiente afirmación: Un thread es a una función, lo que un proceso es a un programa, un environment en el cual se ejecuta.
Programación Multihilo
Casos de estudio Conseguir mensajes animados en salida estandard. Replantear el servidor web, manipulando peticiones simultáneas sin comenzar nuevos procesos
Programación Multihilo
¿Tenemos ya algo?1. mensajes animados
2 . servidor web, multihilo
• En el primero, usaremos funciones de la librería curses• En el segundo nos basamos en el servidor web multitarea
Programación Multihilo
¿Cómo pueden comunicar los Threads? Al igual que cualquier función del mismo proceso, los threads comparten las variables globales.
Programación Multihilo
¿Cómo pueden comunicar los Threads? Al igual que cualquier función del mismo proceso, los threads comparten las variables globales. Accesos simultáneos a memoria es un método simple pero peligroso, ésta es una característica de los threads.
Programación Multihilo
¿Cómo pueden comunicar los Threads? Al igual que cualquier función del mismo proceso, los threads comparten las variables globales. Accesos simultáneos a memoria es un método simple pero peligroso, ésta es una característica de los threads. Para prevenir accesos simultáneos a los mismos valores es necesario aplicar mutex, es decir, debemos prevenir la corrupción de datos.
Programación Multihilo
Efecto de mover un mensaje en la pantalla funciones de la librería curses:initscr() para inicializar curses y ttyendwin() reset tty y desactivar cursesrefresh() pasar a screen lo que desamosmove(r,c) mover cursor a posición (r,c) de screenaddstr(s) poner string s sobre screen addch(c) poner carácter c sobre screenclear() limpiar screen
Programación Multihilo
Efecto de mover un mensaje en la pantalla standout() activar modo standout (video inverso) standend() desactivar modo standout ¿Qué hace la función refresh()? Concepto de virtual y real screen
Recorremos los programas hello.c libro Molay
Programación Multihilo
¿Cómo realmente trabaja sleep? Llamadas de sistema: alarm() y pause()
Nos proponemos mejor control del 'delay' ya que: un segundo es demasiado grande en nuestro proyecto necesitamos agregar una entrada de usuario
entonces aplicamos
hanler por SIGALARM alarm(nseg) pause()
Programación Multihilo
Intervalos de Tiempo Tres timers: real virtual profile Consideramos ITIMER_REAL struct itimerval it_value it_interval llamada de sistema getitimer() y setitimer()
programa ticker_demo.c libro Molay