2009-07-27 8 views
1

Si vous générez un processus fils dans ruby ​​(en utilisant Kernel.system par exemple), peut-il utiliser un processeur différent pour le processus parent?CPU utilisée par les processus fils générés par ruby ​​

Si oui, pouvez-vous utiliser plusieurs threads (dans la même CPU) dans un processus parent, et chaque thread engendrant un processus enfant qui peut utiliser un processeur différent, même en ruby ​​1.8?

(arrière-plan -.. Il est superscript.rb de this superuser question, mais plutôt que de faire tous les 50 dossiers, je veux juste faire l'un des dossiers rapidement j'utilise Ubuntu Linux)

Répondre

5

processus Ruby ne sont pas différent de tout autre processus - ils sont planifiés par le système d'exploitation de manière indépendante, et peuvent être répartis entre les processeurs en fonction des caprices du système d'exploitation.

Les fils C/Ruby 1.8, d'autre part, sont des fils «verts», dont l'OS ne sait rien. Tous les threads d'un processus Ruby donné seront exécutés sur le même CPU. Toutefois, vous pouvez utiliser des threads pour gérer les sous-processus, et ces sous-processus peuvent être planifiés sur plusieurs processeurs.

+1

En ce qui concerne cette question, Kernel.system crée un sous-processus, pas un thread Ruby. – Pesto