2012-08-08 11 views
8

He estado probando ocsigen que usa Lwt. Supongo que Lwt significa "hilo de peso ligero", ¿verdad? Si es así, ¿cómo podemos llamarlo "peso ligero"?¿Lwt significa "hilo de peso ligero"?

Parece que Lwt está utilizando el hilo del sistema operativo que NO es liviano (en comparación con Erlang y Haskell).

Por favor, arroja una luz sobre mí, gracias!

Respuesta

7

El documentation page for Lwt dice:

[LWT] proporciona muy ligero de peso cooperativa hilos; `` lanzar '' un hilo es una operación muy rápida, no requiere una nueva pila, un nuevo proceso o cualquier otra cosa. Además, los cambios de contexto son muy rápidos. De hecho, es tan fácil que lanzaremos un hilo para cada llamada al sistema. Y componer hilos cooperativos nos permitirá escribir programas altamente asincrónicos.

15

Sí, Lwt significa que los hilos ligeros y los hilos de Lwt son livianos. Lwt tiene un modelo de subprocesamiento cooperativo, solo un subproceso lwt único se ejecuta al mismo tiempo en una única cadena de sistema, hasta que cede el control explícitamente. Es su deber asegurarse de que su cálculo eventualmente ceda, de lo contrario, es posible que nunca se ejecuten otros subprocesos.

Sin embargo, Lwt también tiene un pool of system threads usado para ejecutar llamadas al sistema de bloqueo o para delegar sus funciones de larga ejecución para que no bloqueen todo el sistema y eviten que se ejecuten otros hilos lwt.

Puede obtener más información sobre el modelo y la implementación de Lwt en el documento this (que puede obtener en la página web del autor original, here).

Cuestiones relacionadas