multithreads programming
DESCRIPTION
The reference is Understanding Unix/Linux Programming A Guide to Theory and Practice Author: Bruce Molay. Prentice HallTRANSCRIPT
![Page 1: Multithreads Programming](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/1.jpg)
Threads ó Hilos de ejecución
➢ Una instancia de ejecución en un programa, pero
Programación Multihilo
![Page 2: Multithreads Programming](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/4.jpg)
Sabemos trabajar con multitarea: Usando fork y exec, ejecutamos varios programas a la vez.
Programación Multihilo
![Page 5: Multithreads Programming](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/9.jpg)
![Page 10: Multithreads Programming](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051208/546fb806b4af9ffa638b45c9/html5/thumbnails/18.jpg)
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