Multithreads Programming

Post on 22-Nov-2014

2.106 views 0 download

description

The reference is Understanding Unix/Linux Programming A Guide to Theory and Practice Author: Bruce Molay. Prentice Hall

Transcript of Multithreads Programming

   

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­