Multithreads Programming

18
 Threads ó Hilos de ejecución         Una instancia de ejecución en un programa,  pero               Programación Multihilo

description

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

Transcript of Multithreads Programming

Page 1: Multithreads Programming

   

Threads ó Hilos de ejecución

➢         Una instancia de ejecución en un programa,  pero                  

Programación Multihilo

Page 2: Multithreads Programming

   

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

Page 3: Multithreads Programming

   

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

Page 4: Multithreads Programming

   

   Sabemos trabajar con multitarea:         Usando fork y exec, ejecutamos varios programas a         la vez.      

Programación Multihilo

Page 5: Multithreads Programming

   

   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

Page 6: Multithreads Programming

   

   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

Page 7: Multithreads Programming

   

   

Programación Multihilo

Antes de pasar a un caso de estudio, veamos si estamos de acuerdo con la siguiente afirmación:

Page 8: Multithreads Programming

   

   

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.

Page 9: Multithreads Programming

   

Page 10: Multithreads Programming

   

Programación Multihilo

   Casos de estudio  Conseguir mensajes animados en salida             estandard.  Replantear el servidor web, manipulando           peticiones  simultáneas sin comenzar nuevos    procesos

Page 11: Multithreads Programming

   

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

Page 12: Multithreads Programming

   

Programación Multihilo

 ¿Cómo pueden comunicar los Threads? Al igual que cualquier función del mismo proceso, los threads comparten las variables globales. 

Page 13: Multithreads Programming

   

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. 

Page 14: Multithreads Programming

   

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.   

Page 15: Multithreads Programming

   

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

Page 16: Multithreads Programming

   

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­

Page 17: Multithreads Programming

   

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() 

Page 18: Multithreads Programming

   

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­