Sistemas Operativos, Variables de Condicion POSIX Threads (Hilos) — Transcript
Full transcript
- 0:01bienvenido a la gente de sistemas
- 0:03operativos continuamos nuevamente
- 0:08trabajando con el tema 2
- 0:11en el vídeo anterior habíamos visto este
- 0:14código tenemos aquí en pantalla donde
- 0:16habíamos hecho una sincronización muy
- 0:18trivial de hilos
- 0:20teníamos dos hilos y luego uno y el dos
- 0:22y fíjense en que tenían prácticamente el
- 0:25mismo código y lo único que hacían era
- 0:26sobre la producción número que nos
- 0:30permitía producir un número seguro
- 0:32aleatorio entre 1 y 1000 en este caso
- 0:34con tres cifras en este caso con dos
- 0:37cifras o dos cifras decimales no quiero
- 0:42simplemente un programa principal que
- 0:45lancia que creaba dos hilos un
- 0:47observador de ustedes que la pregunta en
- 0:50función de creación de hilos
- 0:53tenemos lohan el de los silos de la
- 0:55referencia de los silos h1 h2 y las
- 0:58funciones y lo uno y lo dos simples y el
- 1:04ataque
- 1:06principal simplemente creo los hilos los
- 1:09lanzaban los ponía en planificación la
- 1:12librería de los argumentos y ejecutado
- 1:16ahí en definitiva el hilo 121 2 y
- 1:20medinas yo soy de esos dos siglos
- 1:23esperando la finalización primero del
- 1:25hilo h1 el huevo el hilo h 21 h uno
- 1:30asociado de entonces a la función y lo 1
- 1:33y 82 de la función y los dos cuando
- 1:36finalizaba
- 1:38el hilo de h1 continuaba mientras tanto
- 1:43queda bloqueado el menú que me queda
- 1:45bloqueado hasta que el hilo uno de los
- 1:47finalistas serie 1 finaliza bueno
- 1:50continúa la ejecución de mails luego
- 1:52hacer lo mismo para h 12 sencillamente
- 1:54un ejemplo muy trivial digamos
- 1:56simplemente una creación de dos hilos un
- 1:57programa principal que ejecutaba y se
- 2:02quedaba esperando la finalización de
- 2:03esos siglos porque porque habíamos
- 2:05explicado que si más interminables y con
- 2:08términos antes se nos caían los hilos
- 2:11que estaban en ejecución así que bueno
- 2:12esto era una forma habitual de trabajo
- 2:17la programación de bueno vamos a pasar
- 2:19ahora a nuestro ejemplo
- 2:23e
- 2:24la idea es hacer algo un poco menos
- 2:27trivial
- 2:28en este caso tenemos un arreglo un
- 2:31arreglo global de dos dimensiones donde
- 2:33se
- 2:34bueno almacenar se van a producir las
- 2:37ventas de tres sucursales para los 31
- 2:41días máximos que pueda tener el mes
- 2:45vamos a seguir usando la función
- 2:46producir el número del ejemplo en el
- 2:48ejemplo anterior pero vamos a usarla
- 2:51para producir totales de ventas pseudo
- 2:54aleatorios diarios es que para cada
- 2:56excusa
- 2:58si entonces la fila representa la
- 3:00sucursal y las columnas representan los
- 3:02días y su idioma tridimensional como
- 3:05tena y tenemos tres siglos o por saleh
- 3:08uno dos y tres
- 3:09el hilo en su posterior no va a producir
- 3:11los datos correspondiente la sucursal 12
- 3:15a la 2 y el 3 a 3
- 3:18y todo se va a almacenar en este arreglo
- 3:20de ventas
- 3:22también agregue una función sur que es
- 3:26una función totalmente genérica
- 3:29que a partir de un puntero de ojos de
- 3:33tipo de audio indicándole la cantidad de
- 3:36elementos a partir de así va a suavizar
- 3:38todos los cuerpos por ejemplo
- 3:42si yo tengo un arreglo de una sola
- 3:45dimensión y de paso la dirección de
- 3:48memoria del primer elemento de ese
- 3:51arreglo y les digo 10 lo que va a hacer
- 3:53es sumar y es labios en memoria contigua
- 3:58uno al lado del otro y me va a devolver
- 4:01el resultado de la sumatoria eso sí es
- 4:03dable que están uno del otro bono esta
- 4:06función la hice porque es un arreglo n
- 4:09dimensiones o cualquier tipo de arreglo
- 4:11en su memoria contigua que está en uno
- 4:15al lado del otro por lo tanto puedo
- 4:17jugar con el tema de punteros y hacer
- 4:20con muy poco código de una manera muy
- 4:22simple una función de surf ahora la
- 4:25vamos a hablar
- 4:27más que nada para que estén
- 4:28interiorizados con él tengo punteros son
- 4:306
- 4:31bueno incluimos alguna que otra cabecera
- 4:35como el string punto h porque vamos a
- 4:37necesitar vamos a deshabilitar
- 4:46salomón deshabitado vamos a traer la
- 4:50inicialización del arreglo de ventas con
- 4:53esta simple instrucción de ans el bloque
- 4:55hago exponer en cero
- 4:57un ser o binario pongo a partir de la
- 5:00dirección de memoria donde comienza el
- 5:01arreglo si la posición 00 a partir de
- 5:05así voy a poner un seminario en tantas
- 5:08tantos by como en el tamaño inundable x
- 5:11tres filas porque el estadio en columnas
- 5:13que se diga la cantidad total de dobles
- 5:16en forma contiguo que tiene este arreglo
- 5:18bidimensional es decir que para hacer
- 5:20son tres por 31 serían noventa y tres
- 5:24estables uno al lado del otro es decir
- 5:27un arreglo de una sola dimensión de 93
- 5:30elementos y un arreglo de dimensiones en
- 5:323.31 exactos
- 5:35los tenemos en forma continua con esta
- 5:39distribución los pusimos todo un cero
- 5:41para evitar hacer loops y demás y ahora
- 5:44como podemos ver que quiero lanzar tres
- 5:48hilos y necesito 3 jandro para no
- 5:49declarar tres variables lo que se me
- 5:52ocurrió fue hacer un arreglo de tres
- 5:54elementos para indicar así los hilos
- 6:01digamos la referencia cada día
- 6:04luego declaré de algo un arreglo de tres
- 6:06dimensiones de tipos voy las teorías
- 6:08cuando estoy guardando los punteros a
- 6:10las funciones por sale 1 2 y 3
- 6:13por lo tanto entonces puedo hacer un
- 6:15informe para crear los cielos de una
- 6:18manera mucho más simple entonces a un
- 6:21fort hood que va a pegar tres vueltas la
- 6:24variable y va a ir de 0 a 2 va a
- 6:26terminar por el valor 3 pero mientras
- 6:28que sea menor que 3 va a golpear y en el
- 6:34techo recibir voy a guardar la
- 6:36referencia a él en y lo que voy a lanzar
- 6:42en este caso del incidente hr sub
- 6:45silbido guardar la referencia libro de
- 6:48la sucursal 1 en helados de la 3
- 6:51bien con esta instrucción voy a
- 6:53lanzarlos y lo que podemos ver una
- 6:55variedad alternando puedo trabajar con
- 6:56las reglas tranquilamente ningún
- 6:58problema son simplemente referencias a
- 7:00los asilos por europa reloj también de
- 7:04esta manera se facilita selección porque
- 7:06son mucho las funciones de y lo que voy
- 7:08a utilizar con muchas instancias de una
- 7:11misma función me conviene trabajar con
- 7:14arreglos de referencias para hacer mucho
- 7:17más fácil los shows torneo bueno
- 7:20entonces vamos a lanzar los tres siglos
- 7:22de las soluciones para que generen los
- 7:23totales de venta vamos a hacer un sorbo
- 7:26para que mine espere la finalización de
- 7:28los tres y los responsables y luego lo
- 7:31que vamos a hacer es utilizar una
- 7:34función suma 1
- 7:36para decirle que a partir la dirección
- 7:38de memoria
- 7:41sub y que corresponde a una sucursal a
- 7:44partir de la dirección
- 7:47pero sería el primer día totales hay un
- 7:52total de 30 100 elementos que sume a
- 7:54partir de ahí no sean estaría dando el
- 7:56total de ventas de la sucursal
- 7:59y luego aquí al final me tira el total
- 8:03general fíjense ustedes quién me sirve
- 8:06en la misma función tanto para sumar por
- 8:08su bolsa como para sumar a todo de la
- 8:09red
- 8:10esa es una de las flexibilidades de la
- 8:12función suma y gracias al uso de
- 8:15punteros 11
- 8:18y díganme cómo hacen esto pascal por
- 8:21ejemplo
- 8:23dentro del tipo de lenguaje
- 8:26ventas sub 0 31 por 3 nos saca me va a
- 8:31sumar la matriz completa
- 8:33y vamos a mostrar el bueno las funciones
- 8:37los alumnos lo pueden ver ustedes lo
- 8:40único que solo
- 8:43para los 31 días y recuerden que los
- 8:47arreglos un simple de 2016 así que sí
- 8:50quiero hablar del día 1 voy a tener que
- 8:52sumarle una variable porque la matriz
- 8:57siempre vas a hacer y generamos un
- 9:00número
- 9:03mostramos de seguro generador y número
- 9:06almacenados en el día y en la sucursal
- 9:09que correspondan en caso de sucursal 1
- 9:11almacenar simple la fila 0 en el caso
- 9:14sucursal 2 siempre vamos en el final un
- 9:16caso se pulsan 3 siempre va almacenar en
- 9:19una fila 2 es la única diferencia que
- 9:22tienen estas funciones por lo cual
- 9:24pueden ver el código es absolutamente es
- 9:26trivial
- 9:28organizado digamos porque es idéntico el
- 9:32código la única diferencia es las filas
- 9:34donde almacenan los valores por último
- 9:38podemos echar un vistazo de la función
- 9:40suma podemos así sea como dije antes por
- 9:43el manejo de punteros declaramos una
- 9:46variable total y tenemos un puntero p
- 9:49llegamos a un doble y tiene que indica
- 9:52la cantidad de
- 9:53cada bloque entonces a un foro e
- 9:57invadiendo 0 en el norte y más entonces
- 10:01por lo tanto va a ser un puerto a dejar
- 10:03las tantas vueltas como en el nuestro
- 10:05tenga y por cada vuelta vamos a
- 10:08incrementar el puntero que incrementar
- 10:10el puntero premio significa ser más uno
- 10:13en este caso tenemos manos en explicar
- 10:14formaciones tiene que significar apunta
- 10:17al siguiente de abril
- 10:19que ocupa 8 gbytes de memoria chicas
- 10:21desde el punto no estamos desplazando
- 10:24[Música]
- 10:26en la posición del amor entonces voy a
- 10:29decir que total más igual asterisco pt
- 10:32bueno entonces maravilloso de ese hilo
- 10:35complejo desea ningún tiempo para
- 10:37entender muchas veces es asterisco p en
- 10:39este contexto explicó que significa el
- 10:43valor apuntado por qué
- 10:45es decir el número de audio que está
- 10:49apuntado por ciento punto a ventas 0 0
- 10:54ir en columna 0 sería la venta del
- 10:58primer día de la primera parte
- 11:01entonces lo apuntado por p series se
- 11:04tratan de renta ese total 30 lo voy a
- 11:07guardar lo voy a acumular en la hora de
- 11:09cortar eso sí dice con más sin igual
- 11:12y por el total es igual a total massari
- 11:15copes y graciela mismo
- 11:17pero no me gusta trabajar
- 11:24un poco profesional
- 11:28y por último una vez que esté fuerte
- 11:33vamos a dar tantas vueltas para dar
- 11:36tantas vueltas este como en elementos
- 11:40allá entonces éste por supuesto que acá
- 11:43es responsabilidad del programador de
- 11:46usar correctamente la función porque no
- 11:48tenemos manera de saber si el arreglo es
- 11:52y si se es y nos pasamos de largo nos
- 11:55pone un n equivocado un valor del
- 11:58equivocado hace un desastre no porque lo
- 12:00atrás irse por fuera del arreglo y va a
- 12:02seguir arrasando con todo la memoria que
- 12:05encuentre este el resultado porque
- 12:08siempre decir eso es lo que tiene ese
- 12:11ese asunto el programador sabe lo que
- 12:13hace a diferencia de java que trata de
- 12:17asumir que el programador es un imbécil
- 12:19y tratar de
- 12:23te ayuda a no lo más que se pueda que no
- 12:25cometa errores bueno devuelve total
- 12:28entonces que la sumatoria digamos de ha
- 12:32perdido su dirección de amor
- 12:34bueno esto es todo lo que hace como
- 12:36pueden ver hay muchos códigos trinidad
- 12:38al acabar mucha cosa todavía que no hace
- 12:40demasiado lo único que avanzamos en este
- 12:43sentido es inicializar la de las reglas
- 12:46de venta error
- 12:50acá abajo
- 12:56la turba ahí estábamos deshabitado para
- 13:00poder volver por el código ahí con
- 13:02cuidados y esto se llama eran dos las
- 13:06que vamos a publicar en la misma
- 13:08dirección
- 13:12bien qué pasó aquí entonces se han
- 13:16creado los cielos sucursal y 1 2 y 3
- 13:20lines se queda bloqueado esperando por
- 13:23la finalización del hilo sopor sale una
- 13:25sucursal 1 en centre que en realidad
- 13:28arrancó antes y sucursal 2 generando
- 13:30todos los días le dio al 2 luego a 3 1
- 13:37y por último le dio cpu a li ling sus
- 13:41alumnos se generaron todos los totales
- 13:43de ventas del día 1 al día 31
- 13:47cuando finalizó el y los sucursal 1 se
- 13:50desbloqueó men y intento bloquearse
- 13:53esperando la finalización de libros o
- 13:55por saldos o moby los saldos había
- 13:57finalizado continuó el nuevo bloqueo de
- 14:01sesión y continuó hasta el siguiente
- 14:04para hacer el bloqueo para esperar por
- 14:06el hilo en la sucursal 3 que se había
- 14:08finalizado también por tanto tampoco
- 14:09bloqueo continuo aumentas y lo que hizo
- 14:14fue usar sumo
- 14:16la función sumo para sumar por filas y
- 14:20causamos sumo para sumar por filas
- 14:25sumamos la fila 0 a la 1 y la 2 y acá
- 14:28abajo y seguimos una sola teoría general
- 14:31bueno sensación buena cuenta monta la
- 14:33mente acá tenemos 4 5 y 5 10 12 10
- 14:3911 17 18 11
- 14:459 16 22 12 14 18 13 14 perfecto es decir
- 14:52que la función sólo hemos podido
- 14:55utilizarlas por filas y por columnas y
- 14:58vemos que el resultado final es
- 15:00totalmente
- 15:02biológico digamos sí correcto bueno esto
- 15:06es lo que hace este ere real
- 15:102
- 15:13ph cuando luchaba
- 15:17bueno que innovamos y nos vamos con los
- 15:21arreglos y no vamos innovamos
- 15:25[Música]
- 15:27con la función sumo
- 15:30por ahora lo una inclinación me cause
- 15:32cambio de nuevos n quisimos pero sigue
- 15:34siendo un programa trivial que los tiene
- 15:36mayores
- 15:37el mayor fundamento
- 15:41ahora vamos a dar una vuelta de tuerca a
- 15:43esto y mejoraremos para organizar un
- 15:46poco este código
- 16:01está creando tantas a lo más que podamos
- 16:05bien hicimos esto seguimos con la regla
- 16:08de ventas seguimos con producir seguimos
- 16:10la función sumo pero ahora
- 16:12como tenemos códigos repetitivo en
- 16:15sucursal lo único que variaba era el
- 16:17código de la sucursal lo que vamos a
- 16:19hacer ahora es un ejemplo de lanzar un
- 16:21hilo con parámetros
- 16:24ahora les vamos a usar una única función
- 16:27sucursal para sumar los datos de la
- 16:29sucursal y le vamos a pasar por eso
- 16:31declaramos que voy a estar y exportar le
- 16:33vamos a pasar el número de sucursal que
- 16:36pretendemos sumar deciden usar uno dos o
- 16:40tres recuerden que el vector es base
- 16:42cero nuevas y cuidado con esto en
- 16:44equivocarse bueno tenemos al menos como
- 16:48siempre los silos como siempre ahora
- 16:50agregamos el vector de parámetros y
- 16:52vamos a tener uno
- 16:56son
- 16:58digamos los parámetros que vamos a pasar
- 17:00a cada una de las instancias y los vamos
- 17:02a crear entonces en petra les quería y
- 17:04ahora vamos a llamar siempre a la misma
- 17:10función pero para crear diferentes hilos
- 17:12y guardar las referencias en diferentes
- 17:15elementos de las reglas de hr pero no
- 17:18vamos a pasar la dirección en la memoria
- 17:20del arreglo parámetros para la posición
- 17:240
- 17:25y 2 entonces vamos a crear un hilo y el
- 17:30primero va a recibir como argumento 1 en
- 17:33el segundo 200 en el tema que los
- 17:35argumentos la barra civil como algo el
- 17:37tipo voy de asterisco en realidad son
- 17:40direcciones de memoria de números
- 17:42enteros
- 17:43así que por lo tanto dentro de su curso
- 17:45vamos a tener que convertir eso voy a
- 17:47ser con un varón entero
- 17:50bien tenemos la dirección de memoria de
- 17:52un valor entero de los ramos aficiones
- 17:56pero luego hacemos los saints como
- 17:59siempre mostramos los totales de eventos
- 18:02por el resto del coro es exactamente
- 18:03igual de la emoción anterior
- 18:06vamos a ver el truco de pasarles
- 18:08argumentos para soportar los hilos
- 18:12recibimos un puntero del tipo de boyle
- 18:14de asterisco entonces el punto le voy a
- 18:16éste ni con somete shock lo voy a
- 18:19castigar una vez en un caso pensé voy a
- 18:23decir eso que desde boy asterisco en
- 18:26realidad es un puntero un entero pues es
- 18:29un puntero de tipo in de astérix
- 18:32entonces una vez que lo convierte en un
- 18:34tono digno asterisco lo pongo entre
- 18:36paréntesis y liz y le pongo el asterisco
- 18:39adelante en este contexto de lo mismo
- 18:42que el caso del asterisco p que son los
- 18:44mencionados anteriormente de sumo
- 18:46esto sería interpretado en c como lo
- 18:49apuntado por todo esto
- 18:52lo apuntado por todo esto es un valor
- 18:54ente entonces sería este asterisco todo
- 18:56esto se transforma en el valor entero
- 18:59apuntado por pesos
- 19:01bueno en ese valor entero dado golpes o
- 19:04que va a ser uno dos o tres dependiendo
- 19:07en la instancia de ejecución le voy a
- 19:09restar uno y eso lo voy a guardar en su
- 19:11expulsar entonces por esta simple
- 19:14instrucción en la variable eso me va a
- 19:16quedar a base cero la sucursal que tengo
- 19:19que suba entonces el resto del código es
- 19:21exactamente igual que antes producimos
- 19:24guardamos el veteado mandamos el mensaje
- 19:26y guardamos en ventas sub sub sube a la
- 19:32venta que hemos producido haciendo va a
- 19:34producir los 31 días de venta para la
- 19:37sucursal y suele pasar por argumentos no
- 19:39se ahorró el código de nosotros dos
- 19:40funciones o pulsar uno dos y tres ahora
- 19:43es solamente su pulsar
- 19:45quiero aclarar acá hay que tener cuidado
- 19:49cuando pasamos parámetros de que eso
- 19:52esos parámetros que le pasamos no sea
- 19:55una memoria volátil o una memoria que se
- 19:58libere o se pierda al momento en que el
- 20:01hilo va a hacer esta operación porque si
- 20:03no vamos a tener un problema es por eso
- 20:05asegurarme de que estos valores
- 20:08persistan en quedar lo que cree
- 20:11[Música]
- 20:17eso podría haber usado el valor de la
- 20:20variable y délfor directamente pero es
- 20:24mucho más seguro manejar una memoria
- 20:28aparte estática digamos que no vas a
- 20:30cambiar al momento de que los hilos se
- 20:34vayan a tomar los valores de sus
- 20:35parámetros recuerden que esto es que son
- 20:38concurrentes bueno
- 20:44digamos que el efecto final es similar
- 20:49lo mismo que el ejercicio anterior vamos
- 20:51a mostrar nuevamente
- 20:58para compilar este código y quiero que
- 21:03piense que es guión lp-3 y guión lm
- 21:06porque sobre la función pop y ahora
- 21:10vamos a ejecutar este hr de borrarla la
- 21:14terminal
- 21:15[Aplausos]
- 21:19como pueden ver usted es el
- 21:23el efecto final es exactamente el mismo
- 21:26si captamos viendo que realmente se
- 21:30planifica un hilo u otro y le da
- 21:33bastante tiempo ese fuego para hacer
- 21:35toda la sumatoria podemos ver los
- 21:38totales bueno los totales deberían estar
- 21:41normalmente bien 17 según a 10 18
- 21:45elecciones seguras o bien
- 21:49fíjense ustedes bueno la planificación
- 21:51es así pero si uno se pone a jugar un
- 21:56poquito y aquí una oración
- 22:0311
- 22:04y es que esto sirve para sincronización
- 22:06sino que lo que vamos a provocar sería
- 22:08que la ejecución tarde más este podemos
- 22:12ver que el ir haciendo un slip sobre los
- 22:15siglos puede ir cambiando la
- 22:17planificación de hilos y entonces de
- 22:19repente tenemos un intercalado entre los
- 22:22entre los hilos de la planificación
- 22:24mucho más grandes y ahora ya no es todo
- 22:26el hilo uno todo ligados todos y los
- 22:28tres que al ponerle la demora digamos
- 22:31eso está forzando de alguna manera que
- 22:33el planificador de la librería de hilos
- 22:35de tres que éste también cambien su
- 22:39elección
- 22:40[Música]
- 22:41debido al bloqueo que provoca slip
- 22:44pero ahora simplemente
- 22:49es una forma de sincronización es
- 22:51simplemente una demora que le pusimos en
- 22:53el congo para ver cómo reacciona
- 22:55planificador de ellos bien hemos hecho
- 23:00entonces ahora de esta versión lo que ha
- 23:03hecho es reducir este la función
- 23:05sucursal y pasarle argumentos fin
- 23:07después el resto del código sigue
- 23:09exactamente igual bueno vamos a dar este
- 23:13una vuelta de tuerca
- 23:16bastante más grande en estados yo y lo
- 23:19que pretendemos hacer acá es
- 23:22no es el mejor ejemplo seguramente pero
- 23:25habría mejores ejemplo con un sistema de
- 23:28gestión más grande o con un sistema de
- 23:32gráficos y demás para probar un poco
- 23:34esto pero la idea es la siguiente vamos
- 23:38a tener un lector de ventas con la misma
- 23:40información de siempre ahora vamos a
- 23:42tener un vector de total sucursal ventas
- 23:44este sector lo que va a hacer es guardar
- 23:46la sumatoria ya emular horizontal de la
- 23:49matriz es decir este tendría en los
- 23:52totales por sucursales y sumaríamos los
- 23:5431 días de cada sucursal y pondríamos en
- 23:57cada elemento de este vector ese total
- 24:00después tenemos el vector hacia la
- 24:04sumatoria y para guardar la sumatoria
- 24:05horizontal y este otro vector sería para
- 24:08guardar la sumatoria vertical si es que
- 24:10nos imaginamos las filas con las
- 24:13sucursales y las columnas con los
- 24:15directos
- 24:16entonces este día ventas va a ser la
- 24:19sumatoria digamos para las diferentes
- 24:22sucursales para un día determinado si
- 24:24los 30 días guardería vamos a explotar
- 24:26después seguimos con producimos ingreso
- 24:291 como siempre
- 24:31tenemos el hilo de que produce los datos
- 24:34por sucursal exactamente igual que
- 24:36siempre para con un parámetros para
- 24:38siguen el número de la sucursal y ahora
- 24:41vamos a agregar otro y lo nuevo que lo
- 24:43vamos a llamar total día y como pueden
- 24:46ver ustedes no también también recibo un
- 24:48argumento obviamente va a ser el día y
- 24:50vamos a pasar ese total día lo que va a
- 24:53hacer es una sumatoria por día y ahora
- 24:58cuál es el problema de hace una
- 24:59sumatoria por los días
- 25:02para poder hacer una sumatoria por día
- 25:04asume todo lo que asegurar que asegurar
- 25:07que se hayan producido los totales de
- 25:12ventas de todo ese día es decir que las
- 25:14sumas al 1 2 y 3 hayan puesto su totales
- 25:16de venta recién ahí voy a poder hacer el
- 25:19total del día con es acá donde entran
- 25:22las variables de condición esta sería un
- 25:24caso donde necesitamos que se dé una
- 25:27condición para que un niño complete su
- 25:29tarea
- 25:31reitero no es el mejor ejemplo por ahí
- 25:33pero bueno pueden ver ejemplos de años
- 25:36anteriores también pero nos sirve como
- 25:39para aplicar más o menos este pseudo al
- 25:41código que tenemos acá que está
- 25:42publicado en entre en la carpeta de la
- 25:45unidad 3 están todas las perspectivas de
- 25:48la unidad 3 y además este aquí también
- 25:51podemos ver en un pseudo códigos y
- 25:54terciario el programa principal no donde
- 25:56queramos una serie de boutiques y
- 25:59variables de condición cada variable de
- 26:01condición va asociado con un multi para
- 26:04comprender esto ya tenemos tener
- 26:06entendido el concepto de que si tenemos
- 26:09semáforos los ven y los donde permite
- 26:12entrar o no entrar el ciclo que a 1
- 26:15bloque por defecto el mismo texto está
- 26:18abierto no bloqueado entonces cuando lo
- 26:20pasamos nos va a permitir tomar un
- 26:23bloqueo y una vez que tomó lo que ordene
- 26:27uno ningún otro y lo pueden son
- 26:29mutuamente excluyendo me permite
- 26:33pero permite implementar el requisito de
- 26:36exclusión mutua si él va asociado un
- 26:39text con una variable condición si las
- 26:42amos los siglos hacemos los shows para
- 26:45los siglos
- 26:46ese es el código y pseudo código de ahí
- 26:49nadal
- 26:51dentro de un hilo yo voy a tener un
- 26:53proceso que realizar en una tarea que
- 26:56realizar pero voy a adquirir el bloque 1
- 27:00voy a ejecutar una sección crítica y si
- 27:03se da la condición voy a hacer el
- 27:04señalamiento bueno
- 27:07no sé exactamente por ejemplo a esto
- 27:11pero digamos que no tenemos en sí una
- 27:15sección vídeo con los hilos como produce
- 27:18el por sucursal
- 27:19y hay un hilo para cada sucursal no hay
- 27:22manera de que se superpongan y que más
- 27:24de un hilo
- 27:25al mismo tiempo pretenda producir en el
- 27:27mismo lugar
- 27:28tener algún tipo de interferencia porque
- 27:31el arreglo compartido pero en las celdas
- 27:35hay un particionado de la ciudad en el
- 27:39apunte de programación paralela acá lo
- 27:41que vemos es un partido nada de datos en
- 27:43realidad tenemos datos condicionados
- 27:45para cada músico lo cual no es mayor
- 27:48problema con esto pero si nos serviría
- 27:51para que cuando se ejecuta un hilo se
- 27:54podría tener la condición sería es estos
- 27:59días completos
- 28:00entonces el hilo productor podría
- 28:02preguntar por eso esté produciendo si no
- 28:05sé en qué sucursal en día no importa
- 28:10para el día es que está completo
- 28:14entonces si para este día está completo
- 28:16yo lo que podría hacer es señalar una
- 28:18variable de condición
- 28:20y los siglos
- 28:23esto sería el código similar a esto
- 28:26sería el código de modelos y los
- 28:29productores que generan los totales de
- 28:31ventas por sucursal
- 28:32ahora bien el hilo de fumador por día no
- 28:37si los fumadores por día
- 28:38nuestros 31 y los jugadores por día
- 28:42es decir la variable de la función total
- 28:45díaz la función total día debería ser
- 28:49algo parecido a esto si tendría que
- 28:51adquirir el candado correspondiente al
- 28:54día así que vamos a tener 31 boutiques y
- 28:5831 a niveles de condición una para cada
- 29:01día entonces voy a tener que tomar el
- 29:03bloqueo del día subí
- 29:07y pregunta está concreto ese día
- 29:10si no está completo ese día voy a
- 29:13esperar voy a hacer un condition white y
- 29:16voy a esperar por
- 29:21por la variable de condición de ese día
- 29:27entonces que iba a ser la variable de
- 29:29condición primero que la variable de
- 29:31condición cuando uruguay por variable
- 29:33condición suele indicar también sobre
- 29:35como text entonces que luego hace la
- 29:37variable condición va a tomar el mont ex
- 29:39y lo va a liberar para liberar el monte
- 29:42ex que iba a dejar este hilo bloqueado
- 29:45este hilo va a quedar bloqueado hasta
- 29:48que alguien ejecute esta instrucción que
- 29:50estará y señalarlo entonces cuando éste
- 29:54es señalado se va al desbloquear este
- 29:58hilo y va nuevamente inventar a adquirir
- 30:01el bloqueo m 1
- 30:04una vez que quiera adquieren lo que él
- 30:06me uno va a ejecutar su sección crítica
- 30:09en este caso de la sección técnica
- 30:11nuestra enseñanza la sumatoria digamos
- 30:14de los hasta la sumatoria de gramos del
- 30:16día
- 30:17y almacenar el valor del día digamos en
- 30:21un vector igual por eso dije no se
- 30:24adapta del todo porque en realidad este
- 30:27sobre ese lector tampoco vamos a tener
- 30:29con corrección porque hay un
- 30:30particionado pues alguien un hilo por
- 30:32cada elemento del vector del arreglo
- 30:36pero bueno igual nos va a servir para
- 30:38jugar con hilos y ver si se bloquean y
- 30:41se desbloquean los jugadores de hilos
- 30:44acorde de lo que van a hacer los
- 30:45productores
- 30:47en ese sentido si no ha sido el ejemplo
- 30:49contras puerto en estas variables de
- 30:51conducción y ver que se pueden hacer
- 30:54una tarea de hilos coordinadas y bien
- 30:59bueno el día completo simplemente es una
- 31:04función que recibe un día y va a
- 31:06analizar si tenemos datos cargados en
- 31:08cada una de las piezas para ese día para
- 31:12las diferentes sucursales llegó a
- 31:13devolver el verdadero falso
- 31:15el verdadero falso no exista en el falso
- 31:18es cero en cualquier cosa diferente de
- 31:21cero es verdad lo que sucede nancys es
- 31:23acá tenemos la declaración de boutiques
- 31:26y variables de condiciones son dos
- 31:28arreglos de 31 elementos
- 31:31inicializa moss ahora todo en 0 1 los
- 31:35arreglos de ventas y los vectores este
- 31:39creamos ahora referencias para hilos
- 31:41pero muchos juegos tenemos los tres
- 31:43hijos de productores estatales de
- 31:45sucursales y los 31 de las variables de
- 31:48condición perdonen los treinta y uno de
- 31:50los de los fumadores de por día los
- 31:54parámetros de las luces son los mismos
- 31:56grabamos en 30 niños para nuestra de los
- 31:58días
- 31:59vamos a lanzar vamos a inicializar los
- 32:03mod ex y las variables de condición los
- 32:05motes y las variables de conexión se
- 32:07tienen que inicializar esa
- 32:09inicialización se puede hacer de dos
- 32:10maneras se puede hacer en forma dinámica
- 32:12en maine una vez que arranca domain de
- 32:15esta manera llamando a petrotech sin it
- 32:18pasándole la dirección de memoria de
- 32:21como de la referencia de un texto en
- 32:24este caso de mi 1
- 32:27nules son un argumento y lo mismo con la
- 32:31variable condición de software con unit
- 32:34pasándole la dirección de memoria y
- 32:37número en el segundo argumento de la
- 32:38forma de inicialización
- 32:43dinámica en tiempo de ejecución pero
- 32:45también es muy común que vean en muchos
- 32:48códigos un músculo sabía mucho nosotros
- 32:50en internet para encontrar
- 32:52inicialización es estáticas acá tenemos
- 32:55un caso de un arreglo de tres elementos
- 32:57para un par de montes invariables de
- 33:01condición que fueron inicializa dos en
- 33:04forma estática el continuador nos genera
- 33:06la inicialización esta aplicación se
- 33:09hace con petro boutiques iniciales hay
- 33:11salud estrés condición y que al ser son
- 33:14las macros que nos sirven para
- 33:17inicializar el bocyl pero bueno como en
- 33:20mi caso son 31 y no me gusta trabajar
- 33:22tanto no pretendía acá poner sabes y
- 33:25escribir 31 veces esto entonces de esa
- 33:28manera elegir inicializar los en forma
- 33:30dinámica si el paso nos sirvió para ver
- 33:33las dos maneras de inicialización de
- 33:35boutiques y de variables de condición
- 33:38bueno luego lo que vamos a hacer el mail
- 33:42vamos a lanzar primero los fumadores
- 33:44diarios
- 33:45para que ustedes puedan ver que sube a
- 33:47lanzar los jugadores diario y lo saben
- 33:49ya que no pueden hacer absolutamente
- 33:51nada deberían quedar todos bloqueados
- 33:54por una cuestión que la condición día
- 33:57completo le va a devolver falso entonces
- 33:59están los días completos y está todo en
- 34:01cero de todos haciéndose esto sirve para
- 34:04ver qué qué y no la lógica no está dada
- 34:10por el orden de lanzamiento de los hilos
- 34:13sino que la lógica está dada por los
- 34:15motes y las variables de condición que
- 34:17controlan este tema de las variables de
- 34:20condición en donde la condición para que
- 34:24se produzca la suma del día es que el
- 34:26día esté completo no entonces por eso a
- 34:30propósito puse el primero del
- 34:31lanzamiento de los hilos fumadores
- 34:33luego el lanzamiento de los hilos por
- 34:35sucursal luego el sol en contra
- 34:41las sucursales y encontrar los fumadores
- 34:48de efectos podría haber hecho indistinto
- 34:50antes o después no importa el tema del
- 34:53crimen
- 34:54a
- 34:57el tema es que me necesita esperar por
- 34:59la finalización de todos esos hilos para
- 35:01terminar de hacer los totales generales
- 35:03que es responsabilidad en este caso
- 35:08utilizar los hubo para hacer la
- 35:10sumatoria de los totales de las ventas y
- 35:14acá lo vamos a hacer los totales de días
- 35:18ya lo hicieron los jugadores de de los
- 35:20silos de sudor por día así que vamos a
- 35:23usar lo sumo para sacar
- 35:27en total general a partir en la
- 35:30sumatoria de los totales de las ventas
- 35:32si a partir de la sumatoria de los
- 35:35totales que hicieron los jugadores de
- 35:37los filos bueno se supone entonces
- 35:40si suma una matriz en forma horizontal o
- 35:42en forma vertical
- 35:44los totales generales que voy a obtener
- 35:47deberían coincidir esto para probar
- 35:49digamos que todo han dado d
- 35:52bueno nos vamos a ver el código de
- 35:55sucursal 1
- 35:57del productor entonces pregunta si el
- 36:00día está completo y en tal caso a su
- 36:02bloqueo del el mut ex correspondiente o
- 36:06al día correspondiente a su signo en el
- 36:09día correspondiente y hace un blog es
- 36:11decir aplicamos más o menos esto como no
- 36:16tengo se ha hecho un bloqueo que no
- 36:17porque no lo necesito en realidad es que
- 36:20no tengo una verdadera excepción crítica
- 36:23en este caso pero no obstante nos
- 36:25servido para decir bueno si el día está
- 36:27completo entonces voy a adquirir el blog
- 36:29del
- 36:31digamos del día correspondiente y voy a
- 36:35señalar la variable de condición del día
- 36:37correspondiente y voy a soltar el log
- 36:39del día correspondiente es una pequeña
- 36:41adaptación a este pseudo el código por
- 36:44eso tome el bloc señal de la variable
- 36:47condición y hizo usted el blog una vez
- 36:49que el día esté completo si no no tiene
- 36:52sentido este
- 36:54no tiene sentido hasta si se hace una
- 36:57pequeña adaptación de este pseudo código
- 37:00general que tenemos publicado
- 37:03y vamos a ver ahora
- 37:06el hilo digamos por día en donde bueno
- 37:10que todos los para no sólo hemos
- 37:11explicado a un príncipe total día a día
- 37:15tanto antes de que quede bloqueado lo
- 37:18primero que hago es tomar un blog
- 37:20ningún texto sí sí fíjense en acá a
- 37:22vuestro como el blog del mont ex
- 37:25correspondiente al día en particular y
- 37:28un día que tengo pasamos como argumento
- 37:32y preguntó si no está el día completo o
- 37:36si esto le va a dar verdadero la primera
- 37:38vez que está todo vencer a otro se nos
- 37:40va a decir que no está había concretado
- 37:41que hubo un solo día esté en cero y al
- 37:45completo va a decir falso
- 37:49para de estar todos con valores
- 37:51diferentes de cero para que yo completo
- 37:53en los hombros como verdadero
- 37:56entonces si no estaría completo voy a
- 37:58ser un con de john wayne de la variable
- 38:01de condición de cedido para el monto
- 38:03extra
- 38:04es decir que basta podemos a estar acá
- 38:08bien luego de eso yo le agregué acá
- 38:13para que incluso ustedes se queden
- 38:16tranquilos de que está todo funcionando
- 38:17pero de que si hubiese algún día que
- 38:22está en cero
- 38:24si hubiese algún día que están 0 al
- 38:27momento de salir acá se supone que todos
- 38:30los días deberían estar completos sí
- 38:32pero si hubiese algunos que están 0 que
- 38:34salga
- 38:36este mensaje en teoría no debería
- 38:39aparecer nunca si la función completa no
- 38:42está andando correcta
- 38:45de seguro las pruebas que estoy haciendo
- 38:50tranquilo electores
- 38:51bueno entonces ahora lo que va a ser es
- 38:55la sección crítica otra sección crítica
- 38:58sería simplemente sumar su ver los días
- 39:00no sé lo que va a hacer es un for good
- 39:02de para variar digamos en una sucursal y
- 39:06no a sumar para ese día todas las
- 39:08sucursales quedan tres y luego acumular
- 39:11enteramente los eventos de tener ventas
- 39:14y luego va a ser el blog del
- 39:17del multics para ese día correspondiente
- 39:19y voy a mostrar un mensaje con el total
- 39:22del día
- 39:26es todo lo que va a ser el salvador de
- 39:28días nunca tenemos el código de día
- 39:31completo en inglés verificar
- 39:35para devolver 0 cuando el día no esté
- 39:38completo va a devolver 1 cuando un día
- 39:40este concreto sin hacer verdadero falso
- 39:43tercero es la mentira al 1 el cielo la
- 39:47mentira y cualquier cosa diferente de
- 39:49cero es verdad
- 39:51bien
- 39:53[Música]
- 40:00vamos a ampliar un poco más para ver
- 40:03mejor es todo el código de estos tal día
- 40:05no lo tenemos
- 40:08acá tenemos todo el código entonces
- 40:11shalit o de sucursal o acaso yo tengo
- 40:15comentado un berlín
- 40:16vamos a mostrar
- 40:20dentro del mensaje para que vea la
- 40:22combinación en la edición
- 40:24esto es
- 40:26el sur
- 40:31[Música]
- 40:341
- 40:35[Música]
- 40:39ustedes corre realmente muy rápido y
- 40:43nada vamos a ver todo el mensaje que
- 40:46emite el charrán 4 total del día si es
- 40:50el de garra el día 4 el planificador se
- 40:54le dio por lanzar este ese hilo de aguas
- 40:58de su valor de día a día 4 2 por el 1 1
- 41:02pero qué pasa el día 4 arranca iba a
- 41:06quedar bloqueado bloqueado porque me
- 41:08faltan ventas y así que va a pasar a
- 41:11todos los total días van a ir quedando
- 41:14bloqueados todos si éste se lanza en el
- 41:19hilo productor del 1
- 41:23se han servido el productor del 1 al 1
- 41:26comenzó a producir
- 41:33intercalando la ejecución de los hilos
- 41:36acá tenemos
- 41:38la producción de la según sanz uno tiene
- 41:41por acá otra vez hay otro está dando
- 41:44vuelta frei que va a quedar bloqueado
- 41:47arranca la solución 2
- 41:50fíjate que como arrancó la sucursal 2 y
- 41:55concretó el día 1 y acá somos alumnos
- 41:59que ha concretado el día 1 de lo único
- 42:00que me faltaba era que lance la sucursal
- 42:043 día 1 que pasó a cada sucursal 3 y
- 42:07algunos completo en los totales de
- 42:10ventas del día 1 entonces cuando llamo a
- 42:13la función
- 42:16cuando llamo la función día completo le
- 42:21digo que si quiero un día que estaba
- 42:23completo dejamos el día 1 entonces que
- 42:26hizo lo que hizo fue tomar el mutec
- 42:29lanzar la señal y desbloquear pero
- 42:31alcanzar esa señal lo que va a provocar
- 42:34es que todo el día en el día 1 que
- 42:38estaba bloqueado esperando a que se
- 42:40complete ese día este se se desbloquea y
- 42:45adquiere nuevamente el bloque bm uno
- 42:48hace su tarea imprimen total es decir
- 42:50que acá en este código lo que va a
- 42:54suceder es que a medida que se vayan
- 42:56completando los días según obteniendo
- 42:59automáticamente rápidamente los totales
- 43:01se se va completando así la tarea
- 43:05deshumanizar el día que no tiene por qué
- 43:09esperar indefinidamente o hacer una
- 43:11espera y mañana simplemente está
- 43:14bloqueado y se desbloquea cuando ya está
- 43:16listo para sumar
- 43:18eso es un poco la gran ventaja de las
- 43:20variables de condición que me traen para
- 43:22el tiempo ni mi tiempo excepto sino que
- 43:24actual en el momento en que señalado que
- 43:27tiene que actuar que cuando se dio la
- 43:29condición para que actúe es a la grande
- 43:32entrar por ahí podemos ver que se pudo
- 43:35sumar izar el día 1 acá sucede lo mismo
- 43:37con los días 3
- 43:43se aprecia sucesivamente se van lanzando
- 43:46los y cuando se hacen en contra de la
- 43:52sucursal dos y tres los encuentra cada
- 43:54uno de los días fumadores en el 1 hasta
- 43:57el 31 así que finalizaron todos los
- 44:00jugadores al finalizar todos los
- 44:02jugadores y todos los productos
- 44:03desplazan los portales por su cursado
- 44:07hago total por sucursal en base a lo que
- 44:11sumamos por filas y en base a lo que
- 44:13sumamos con los analizados y fíjense que
- 44:16nuestros totales nada exactamente lo
- 44:19mismo con lo cual podemos comprobar que
- 44:21la ejecución fue correcta de guardemos
- 44:26diferencias no salió en ningún momento
- 44:28el mensaje de error que les decía
- 44:30digamos que sí así funciona esa función
- 44:33que hemos hecho bien si le agregamos acá
- 44:37el egipto para forzar una una
- 44:40planificación de hilos diferente nos
- 44:43vamos a hacer exactamente la ejecución
- 44:47va a tardar mucho más y obviamente el
- 44:50intercalado ha pasado mucho más grandes
- 44:52pero fíjense ustedes cómo cambió la
- 44:54planificación y cómo pueden ver ustedes
- 44:56a medida que se van completando los días
- 44:58se van lanzando se van desbloqueando en
- 45:01los silos fumadores diarios y van
- 45:03tirando los portales diarios
- 45:06acá tenemos más gente que la gente que
- 45:08la lógica del código de la programación
- 45:11que hemos hecho sigue funcionando en
- 45:12forma que se demoren las tareas y esté
- 45:15slim nos permite probar tanto poniendo
- 45:18un slip como en los fumadores como bueno
- 45:21productor como el jugador de que es
- 45:23independiente que se demora más o menos
- 45:26una tarea es la lógica este funciona
- 45:30porque no hemos hecho digamos con un
- 45:32criterio
- 45:34correcto de cómo utilizar esto que son
- 45:38los hilos y cómo pueden ver los
- 45:40resultados finales es correcto
- 45:46no este mensaje también es típico de la
- 45:49consola
- 45:51bueno esto esto sería todo entonces
- 45:56acá podemos ver un ejemplo de variables
- 46:00de condición digamos en un contexto de
- 46:02ellos
- 46:04bueno eso ha sido todo entonces hasta la
- 46:06próxima muchísimo
About this transcript
This page contains the full transcript of Sistemas Operativos, Variables de Condicion POSIX Threads (Hilos) by Guillermo Cherencio, generated from the public captions YouTube serves with the video. The transcript has 6,348 words across 975 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.