0% encontró este documento útil (0 votos)
365 vistas8 páginas

Aplicaciones Multihilo

Este documento presenta los principales problemas que pueden surgir al programar aplicaciones multihilo, como la complejidad aumentada, complicaciones por concurrencia y resultados impredecibles. Se incluye un diagrama que muestra estos problemas y se discuten posibles soluciones, como usar un sistema de mensajería para compartir datos entre hilos y diseñar para evitar la concurrencia. El objetivo es identificar los desafíos de la programación multihilo para comprender mejor este concepto.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
365 vistas8 páginas

Aplicaciones Multihilo

Este documento presenta los principales problemas que pueden surgir al programar aplicaciones multihilo, como la complejidad aumentada, complicaciones por concurrencia y resultados impredecibles. Se incluye un diagrama que muestra estos problemas y se discuten posibles soluciones, como usar un sistema de mensajería para compartir datos entre hilos y diseñar para evitar la concurrencia. El objetivo es identificar los desafíos de la programación multihilo para comprender mejor este concepto.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

PROBLEMAS EN

APLICACIONES
MULTIHILO
Tópicos avanzados de programación

Jesus Alejandro Sosa Salazar


Uziel Israel Can Magaña
Miguel Secundino Ojeda Kantun
Marcos Alejandro Ku Muñoz

21 DE MAYO DE 2020
INSTITUTO TECNOLOGICO SUPERIOR DE CALKINI EN EL ESTADO DE CAMPECHE
Introducción
Para poder explicar claramente lo que es la programación multihilo, lo primero
es necesario aclarar una serie de conceptos para entender la diferencia entre
multiproceso y multihilo.
Los sistemas operativos multitarea ejecutan o emulan ejecutar más de una tarea a
la vez. Esto es solo cierto si dispone de más de un procesador, si no, va
alternando procesos en un solo procesador.
La ejecución de un proceso implica que el mismo en el momento de ejecución
utiliza todo el procesador y con el espacio de memoria asignado. En sistemas
multitarea, se van alternando procesos y cuando uno libera el procesador para que
otro se ejecute, también libera la memoria asignada.
Esto lo realiza el planificador del sistema operativo lo cual implica la correcta
gestión de la memoria para guardar los datos del proceso saliente, provocando
cierta sobrecarga del sistema.
La programación multihilo se basa en que, dentro del desarrollo de la aplicación,
hemos definido diversas tareas para que se ejecuten a la vez. Todas estas tareas
forman parte de un mismo proceso.
Para nuestro sistema operativo tendremos un solo proceso con diversas tareas a
ejecutar. En este sentido el planificador se encarga de que cuando le toque
ejecutarse a nuestro proceso, las tareas del mismo se vayan alternando, con la
diferencia que, al ser de un mismo proceso, no se libera espacio de memoria ni
procesador, como si se hiciera en el caso de alternar procesos.
Esto agiliza por lo tanto la ejecución de nuestro proceso que además puede
simular paralelizar la ejecución de varias tareas a la vez.
Para realizar una programación multihilo, deberemos indicar en el código de
programación mediante el comando correspondiente que queremos lanzar
diversas tareas en diferentes hilos.
Resumen
En el presente trabajo de investigación se presentará algunos de los principales
problemas que puede ocasionar el programar bajo el concepto de multihilo, ya que
al ser de gran utilidad actualmente infinidad de aplicaciones, también puede
representar diversos problemas en el momento de ser programados, durante su
ejecución y al finalizar la tarea.
Para completar esta actividad se elaboró un diagrama en donde se podrán
visualizar los problemas resultantes de la programación multihilo y que, en el
mismo cuerpo del documento se redactará posibles soluciones a los problemas
presentados.

Abstract
This research work presents some of the main problems that the program can
cause under the concept of multithreading, since it can be very useful nowadays,
an infinity of applications, it can also represent various problems at the time of
being programmed, during its execution. and at the end of the task.
To complete this activity, a diagram was created where the problems resulting from
multithreading can be visualized and that, in the same body of the document,
possible solutions to the problems will be written.

Objetivo
Identificar los distintos problemas de aplicaciones multihilo para posteriormente
elaborar un diagrama en donde se muestren estos para finalmente redactar las
posibles soluciones.

Justificación
Como parte de la formación de un ingeniero en sistemas computacionales se
encuentra la comprensión abstracta de los distintos programas que se ejecuten en
el entorno, como lo es la programación con aplicaciones multihilo. Es importante
conocer las ventajas y desventajas de este concepto puesto que en un futuro
podemos hacer uso de este, además de conocer como resolver los problemas que
se presenten.
Métodos y materiales
Para poder realizar una investigación con la información correcta y no caer en
redundancias, empleamos el método de investigación documental que nos servirá
como guía para obtener los resultados deseados y estos sean los esperados a lo
largo de las etapas de la metodología.
Teniendo como base lo siguiente:
1. Elección del tema.
2. Acopio de la bibliografía básica sobre el tema.
3. Lectura de material.
4. Delimitación del tema.
5. Lectura minuciosa de la bibliografía.
6. Redacción del trabajo final.

Es importante destacar las herramientas utilizadas a lo largo de este trabajo para


determinar lo alcanzable a partir de lo disponible.
Las herramientas utilizadas son:
 Equipo de cómputo
 Internet
 Procesador de Texto
Problemas en aplicaciones multihilo
Los programas multiproceso permiten la ejecución de múltiples partes de un
programa al mismo tiempo. Estas partes se conocen como hilos y son procesos
ligeros disponibles dentro del proceso.
Los hilos mejoran el rendimiento de la aplicación utilizando el paralelismo.
Comparten información como el segmento de datos, archivos de segmentos de
código, etc. Con sus hilos pares mientras contienen sus propios registros, pila,
contador, etc.
Estos son algunos de los problemas con los programas multihilo.

Incrementa la
complejidad

Complicaciones
Complicaciones
para portar
por
código
concurrencia
existente
Problemas
en
aplicaciones
Resultados
multihilo Dificultad al
identificar
impredecibles
errores

Complicaciones
de testeo
A continuación, se explica brevemente en qué consisten estos:
Incrementa la complejidad: Los procesos multihilo son bastantes
complicados. La codificación de estos solo puede ser manejada por
programadores expertos.
Complicaciones por concurrencia: Es difícil manejar la concurrencia en
procesos multihilo. Esto puede conducir a complicaciones y problemas
futuros.
Dificultad al identificar errores: La identificación y corrección de errores
es mucho más difícil en procesos de multihilo en comparación con procesos
de un solo hilo.
Complicaciones de testeo: El testing es un proceso complicado en
programas multihilo en comparación con los programas de un solo hilo.
Esto se debe a que los defectos pueden estar relacionados con el tiempo y
no son fáciles de identificar.
Resultados impredecibles: Los programas multihilo a veces pueden
conducir a resultados impredecibles, ya que son esencialmente múltiples
partes de un programa que se ejecutan al mismo tiempo.
Complicaciones para portar código existente: Se requieren muchas
pruebas para portar código existente en procesos multihilo. Las variables
estáticas deben eliminarse y cualquier código o función que no sea segura
para multihilo debe reemplazarse.[ CITATION Kri18 \l 2058 ]

Sugerencias de solución a los problemas en aplicaciones multihilo


Muchos problemas de subprocesos se centran en acceder o compartir datos entre
subprocesos. Una forma de evitar esto es usar un sistema de mensajería, que
proporciona una forma robusta de almacenar y entregar mensajes entre dos
puntos finales; Estas podrían ser dos partes de la misma aplicación o dos
aplicaciones que se ejecutan en diferentes máquinas en red. Después del envío, el
sistema de mensajería almacena el mensaje hasta que se pueda entregar.
Los problemas de subprocesamiento / concurrencia son notoriamente difíciles de
replicar, que es una de las razones por las que debe diseñar para evitar o al
menos minimizar las probabilidades. Esta es la razón por la cual los objetos
inmutables son tan valiosos. Intente aislar objetos mutables en un solo hilo y luego
controle cuidadosamente el intercambio de objetos mutables entre hilos. Intente
programar con un diseño de entrega de objetos, en lugar de objetos
"compartidos". Para este último, use objetos de control totalmente sincronizados
(que son más fáciles de razonar), y evite que un objeto sincronizado utilice otros
objetos que también deben sincronizarse, es decir, trate de mantenerlos
autónomos. Tu mejor defensa es un buen diseño.
Por ejemplo, el agente de mensajería RabbitMQ de código abierto, escrito en
Erlang, le permite enviar decenas de miles de mensajes por segundo.
Conclusión
La programación multihilo sin duda tiene mucho campo de aplicación, desde los
sistemas operativos hasta en la tecnología que usamos cotidianamente como los
celulares, cajeros etc.
En la elaboración de este trabajo obtuvimos conceptos que nos darán la fluidez
para desarrollar aplicaciones javas utilizando multihilo, con la finalidad de poder
realizar más de una tarea a la vez y administrando correctamente los recursos del
ordenador.
La utilidad de la programación multihilos resulta evidente. Por ejemplo, un
navegador Web puede descargar un archivo de un sitio, y acceder a otro sitio al
mismo tiempo. Si el navegador puede realizar simultáneamente dos tareas, no
tendrá que esperar hasta que el archivo haya terminado de descargarse para
poder navegar a otro sitio.
En conclusión la programación multihilo está presente es la mayor parte de las
aplicaciones informáticas que usamos cotidianamente sin importar el lenguaje en
que se desenvuelvan, el concepto de Thread o Hilo seguirá siendo el mismo.
Referencias
Castro, K. (11 de 10 de 2018). Tutorialspoint. Obtenido de Major issues with multithreaded
programs: https://www.tutorialspoint.com/major-issues-with-multi-threaded-programs

Dol, L. (31 de 01 de 2009). stack overflow. Obtenido de How to detect and debug multi-threading
problems?: https://stackoverflow.com/questions/499634/how-to-detect-and-debug-
multi-threading-problems

También podría gustarte