PROGRAMACION PARALELA O MULTIHILOS

225 views
Skip to first unread message

Edgar Barron

unread,
Jul 31, 2014, 4:17:07 PM7/31/14
to vfpl...@googlegroups.com

Hola a todos.

 

Alguien ha trabajado o ejecutado rutinas simulando la programación  paralela o multihilos.

Yo personalmente tuve que hacer un proceso para simular este tipo de programación. Y busco una forma mas eficiente para hacerlo

Necesito de su experiencia si alguien ha trabajado de esta forma para mejorar y optimizar mis aplicaciones.

 

Les explico un poco como lo hice, pero si alguien tiene una mejor idea seria fantástico compartirlo.

se que se debe hacer un programa EXE, al que se debe ejecutar, mandando los parámetros que quiero que ejecute.

 

1.0   creo una programa EXE independiente de mi aplicación la ejecuto como PROGRAMA.EXE

2.0   crea un prg tipo librería, con funciones y procedimientos al que jalo desde PROGRAMA.EXE  dependiendo la condición que quiero

3.0 creo una tabla física temporal  dbftem???.dbf en mi aplicación, cada vez que se ejecuta.

 

El procedimiento es el siguente:

Esto normalmente lo uso cuando necesito leer información de varias tablas

-          Por cada proceso que voy hacer, creo un registro en la tabla dbftem???.dbf, cargando los parámetros y valores en los campos de la tabla

-          Una vez terminado de cargar los procesos ejecuto el PROGRAMA.EXE y le envio como parámetro el nombre de la tabla temporal y la condición creado previamente

Run /n programa dbftem???  Condcion

voy a ejecutar tantas veces como registro tengo

 

-          Al ejecutar el PROGRAMA.EXE, este va leer el registro de esta tabla , que tenga la condición que le pase como parámetro y va ejecutar el proceso relacionado a esa condición el cual va llamar a la librería creada.

-          Una vez terminado el proceso de cada registro marca como terminado en un campo el valor  que indique que termino

-          Mientras que en la secuencia de código después de ejecutar el programa PROGRAMA.EXE,  hay  DO WHILE  , va verificando que todos los indicadores de termino estén como terminado, para  salir que este, este DO  WHILE  , es para mi WAIT de espera.

 

Una vez terminado, continuo con la ejecución de mi código.

 

Espero que les sirva de algo, y si alguien tiene mejor idea por favor compartirlo

 

Saludos

Edgar Barrón

Analyzer

unread,
Jul 31, 2014, 4:20:21 PM7/31/14
to vfpl...@googlegroups.com
Y para que te sirve eso en el mundo comercial? Leo que se requiere de buen hardware y eso:



Saludos!


--
Has recibido este mensaje porque estás suscrito al grupo "Visual Foxpro Latinoamérica" de Grupos de Google.
Visita este grupo en http://groups.google.com/group/vfplatino.

Fernando D. Bozzo

unread,
Jul 31, 2014, 5:16:12 PM7/31/14
to vfpl...@googlegroups.com
Analyzer:

En el mundo comercial tiene varios usos.

caso 1) Imaginate si no existiera el spooler de Windows y la impresión siguiera siendo como en los tiempos del DOS, donde, hasta que no terminaba de imprimir, no se podía hacer más nada. El spooler de Windows actúa en otro hilo de ejecución, que por estar bien encapsulado se puede usar como un servicio.

caso 2) El SQLExec() y CursorSetProp() permiten, con ciertos parámetros, la ejecución asincrónica de consultas, donde se recuperan bloques de registros (por defecto 100, se puede ver en el menú Options/Remote Data), lo que permite comenzar a mostrar datos al usuario de forma instantánea, antes de que se carguen todos los registros de la tabla, y que se siguen cargando solo cuando se avanza cierta cantidad de registros. Esta ejecución asincrónica se hace en otro hilo de ejecución, sin el cuál obligaría a esperar a que se cargue toda la tabla

caso 3) Hay cálculos que podrían ejecutarse en segundo plano, mientras el usuario va haciendo elecciones de opciones, cosa que vaya refrescando totales automáticamente sin tener que darle al botón "calcular" cada tanto

caso 4) Hay muchas operaciones que se podrían paralelizar, y que no requieren esperar a que terminen para poder hacer otra cosa (copia de archivos, reportes, etc).

caso 5) Imaginate poder lanzar un reporte que tarda 40 minutos en buscar y consolidar la información que necesita, y mientras eso ocurre, poder seguir usando otras partes del sistema

caso 6) ¿Y un cálculo muy complejo, que depende de la suma o promedio de varios cálculos intermedios intensivos? Todos los cálculos intermedios se podrían ejecutar en paralelo y llegar al resultado final antes.

Como ves, hay muchos "usos comerciales" y no comerciales para el multihilo, donde se puede aprovechar la potencia de tener procesadores de más de un núcleo.

El problema es que aprovechar esto implica un cambio de mentalidad donde, ante todo, tenés que tener claro el concepto de capas, y luego, el concepto de diseño de tareas o funcionalidades autónomas.


Saludos.-

Fernando D. Bozzo

unread,
Jul 31, 2014, 5:18:28 PM7/31/14
to vfpl...@googlegroups.com
Hola Edgar:

Echale un ojo al proyecto ParallelFox de VFPx:
https://vfpx.codeplex.com/wikipage?title=ParallelFox&referringTitle=Documentation


Saludos.-

Analyzer

unread,
Jul 31, 2014, 10:54:10 PM7/31/14
to vfpl...@googlegroups.com
>El problema es que aprovechar esto implica un cambio de mentalidad donde, ante todo, tenés que tener claro el concepto de capas, y luego, el concepto de diseño de tareas o funcionalidades autónomas.

Te agradezco la catedra !!

Saludos!


Reply all
Reply to author
Forward
0 new messages