jueves, 3 de mayo de 2012

Javascript paralelo

StratifiedJS extiende el lenguaje JavaScript con un pequeño número de construcciones de programación concurrente. Le permite expresar el flujo de control asíncrona en un estilo secuencial sencillo:



En ese código lo que se intenta recuperar las noticias de la BBC, al mismo tiempo trata de la CNN si no se recibió la noticia después de 1 segundo muestra la primera noticia que llega, y cancela cualquier solicitud que todavía podría estar en espera el tiempo de espera después de 1 minuto si no hay noticias recibidas, de forma automática la cancelación de las solicitudes pendientes.


StratifiedJS ejecuta el código en unidades lógicas que llamamos estratos. A diferencia de lo normal el código JS, los estratos se les permite "bloquear", es decir, el flujo de control se le permite detenerse en un punto determinado para ser recogidos más tarde en el mismo punto donde lo dejó. Un ejemplo sería la instrucción espera que bloquea por un período de tiempo dado.
Mientras que un estrato está bloqueado, puede ejecutar otros estratos. Los estratos son un poco como las discusiones, pero son mucho más determinista: un único estrato se está ejecutando en un momento dado y se ejecuta atómicamente hasta el punto en que o bien acabados o suspende. En ese punto el siguiente estrato pendiente se ejecuta hasta que termina o suspende, y así sucesivamente.
StratifiedJS contiene construcciones para la fundición de lógica asincrónica en forma de bloqueo (waitfor ()) y construcciones para la combinación de múltiples estratos (waitfor / y, waitfor / o desove) de una manera estructurada.

La función de StratifiedJS espera puede ser llamada con un argumento t el número de suspender el actual estrato de ~ t milisegundos:

La función de StratifiedJS espera puede ser llamada con un argumento t el número de suspender el actual estrato de ~ t milisegundos:
hold(1000);


Se debe tener en cuanta que sólo suspende el estrato que aparece en, que no bloquea todo el programa y no lo hace 'ocupado espera'. Otras capas simultáneas puede continuar para ejecutar durante este tiempo. Si está ejecutando SSJ en un navegador, la interfaz de usuario se quedará plenamente sensible durante los períodos de suspensión.


Referencia

http://onilabs.com/stratifiedjs

1 comentario: