Hola Mauricio, a nosotros nos queda el trabajo de programar y planear la distribución de los procesos, pues el cpu ni windows ni el programa saben la secuencia ni dependencia de los mismos de antemano. Ningún lenguaje puede por sí solo hacer que una aplicación diseñada para 1 o dos cpus trabaje con 4 o 6 si el programador no lo previó. Un ejemplo evidente son los convertidores de video o rutinas de compresión. Descarga winrar 2.xx y compara con winrar 4 verás que el rendimiento difiere por la optimización del uso de los cpus.
Y a la pregunta de Luis, por ejemplo con multiprocesamiento si..:
Tienes 20 tablas que requieren ordenarse o indexarse, puedes dividir el proceso en 4 y reindexar 4 tablas a la vez.
Generar reportes: si necesitas enviar 1000 estados de cuenta no lo haces serialmente, puedes crear cuatro procesos simultáneos que ejecuten la tarea en menor tiempo.
Enviar correos electrónicos: no paras el servicio si un servidor tarda en responder. Otro trabajador ( como se le llama en Vfp ) toma la petición de nuevas tareas.
En programas complejos que ejecuten procesos no dependientes ( ejemplo: necesitas obtener datos de 4 fuentes distintas - convertir una hoja de excel, traer data de sql server y otra de un servicio web ) puedes invocar a la vez la peticion y armar el resultado con un tiempo máximo igual al tiempo que tome la tarea mas larga, y no a la suma de los tiempos de todas. No tendrás lo que llamamos 'idle time' o tiempo ocioso. Las posibilidades son muchas y como dije dependen de cada aplicación en particular. Si tienes un sistema con tiempos de proceso muy pequeños tal vez no te beneficie, pero cuando se programan servidores de negocios o procesos batch es importantísimo exprimir todo el poder del cpu.
Yo tengo un proceso que requiere recalcular digamos 5.000 posiciones de estados de cuenta a una fecha en el pasado... porque ir del 1 al 5000 si puedo lanzar un proceso que ejecute del 1 al 1000 , otro al mismo tiempo del 1001 al 2000 y así... termina mucho antes!
Para los que llegan tarde, discutimos acerca de multiprocesamiento con Vfp.
El link de parallelfox está en activeVfp.:
http://vfpx.codeplex.com/wikipage?title=ParallelFox&referringTitle=HomeSaludos.
Marco Plaza