¿Qué son “hilos sin peso” y cómo los implemento? ¿Cuáles son las ventajas de usarlos?

Los llamados “hilos sin peso” también se llaman microthreads e hilos verdes, entre otros nombres. Son una forma de multitarea cooperativa que esencialmente le permite ejecutar múltiples funciones simultáneamente en un solo programa.

Si desea crear una implementación de “subproceso sin peso”, debe hacer dos cosas:

  1. Escribe un planificador
  2. Averigüe la construcción de respaldo para los “hilos” que desea ejecutar. En Python, estos pueden ser funciones, clases, módulos y posiblemente otras cosas.

http://www.ibm.com/developerwork… presenta una implementación de muestra y una explicación más larga de lo que son los “hilos sin peso”. El primer programa de muestra es conciso y transmite la idea de manera efectiva.

Stackless Python contiene lo que podría decirse que es la implementación Python más conocida de hilos verdes: http://www.stackless.com/.

Un punto importante sobre los hilos verdes en CPython es que * no * se saltan el GIL. Todavía puede ejecutar solo un subproceso computacional en un momento dado, y no puede ejecutar varios subprocesos verdes al mismo tiempo. Se ejecuta un hilo verde, luego otro, luego otro.

Si necesita esto, Erlang (lenguaje de programación) tiene una implementación madura e industrial. No es el tipo de cosa que uno quisiera diseñar y depurar solo.

Ventajas:

  • sin estado compartido (la mayoría del código de la aplicación no tiene bloqueo)
  • sobrecarga de memoria muy baja (unos pocos cientos de bytes por proceso)
  • muy baja latencia
  • escala a varios millones de procesos en un sistema (los hilos de Posix simplemente no pueden hacer esto).

More Interesting

¿Cuál es la mejor manera de explicar la desfragmentación en el contexto informático?

¿Cuáles son algunas de las mejores prácticas para escribir paquetes de software específicamente para aplicaciones científicas y aprendizaje automático? ¿Serían relevantes las mismas prácticas utilizadas en el desarrollo de software ágil?

¿Qué campos se volverán populares después de que la inteligencia artificial domine el mundo entero?

¿Cuáles son algunos de los problemas NP-Complete más notables?

¿Cuántas computadoras diferentes de las grandes empresas tienen el mismo diseño de CPU?

Cómo encontrar el número de coeficientes impares en un producto muy largo de secuencias

¿Qué tipos de archivos no son vulnerables a los virus informáticos?

¿Cuál sería la mejor manera de prepararse para el GRE en 3er año si estoy estudiando TI en el Instituto Indio de Tecnología de la Información, Allahabad (Campus Amethi)?

¿Cuáles son los enfoques actuales para resolver problemas completos de NP?

¿Qué es el algoritmo LWL (aprendizaje ponderado localmente) sobre el aprendizaje automático? ¿Me puede dar alguna información al respecto?

¿Es el final de mis sueños?

¿Cuál es el propósito de tener un curso sobre ingeniería de software? ¿Por qué debería tomarlo en serio?

¿Por qué elegir la estructura de datos incorrecta hace que un programa sea ineficiente?

¿Cuál es la diferencia entre los sistemas de archivos NTFS y FAT32?

¿Vale la pena hacer un MTech en informática del ISM Dhanbad?