2011-09-20 21 views
9

Estoy experimentando con subprocesos y fibras en D y me preguntaba si es posible ejecutar una fibra en una CPU diferente cuando se está ejecutando el subproceso principal. Y si este no es el caso, ¿cuál sería la razón de usar Fibras sobre hilos? (Los ejemplos prácticos son muy bienvenidos)Fibras sobre subprocesos en D

Intenté escribir un programa inicial con Fibras donde cambio a la siguiente fibra después de un tiempo. Como he notado, el uso de la CPU se mantiene solo en una CPU.

La documentación de D afirma:

Tenga en cuenta que no hay ningún requisito de que una fibra se une a una hilo específico. Por el contrario, las fibras se pueden pasar libremente entre los hilos , siempre que no se estén ejecutando.

¿Esto significa que tengo que proporcionar un hilo para que la fibra se ejecute si quiero que use una CPU diferente? Si este es el caso, entonces no veo el propósito.

¡Gracias de antemano!

Respuesta

8

Las fibras son un mecanismo liviano para la multitarea cooperativa, y se ejecutan en el mismo hilo que su creador/llamador. Si necesita ejecutar una tarea en una CPU diferente, use subprocesos. El propósito de las fibras es proporcionar una rápida conmutación de contexto cooperativo y mecanismos para implementar patrones tales como corutinas.