2009-07-27 3 views
1

Если вы создаете дочерний процесс в ruby ​​(например, с помощью Kernel.system), может ли он использовать другой процессор для родительского процесса?CPU, используемый дочерними процессами, порожденными ruby ​​

Если да, можете ли вы использовать несколько потоков (внутри одного ЦП) в родительском процессе и иметь каждый поток, порождающий дочерний процесс, который может использовать другой процессор, даже в ruby ​​1.8?

(Background -.. Это superscript.rb от this superuser question, а не делать все 50 папки, я просто хочу, чтобы сделать одну из папок быстро я использую Ubuntu Linux)

ответ

5

Рубин процессы не отличные от любого другого процесса - они запланированы ОС самостоятельно и могут быть распределены между процессорами в соответствии с прихотями ОС.

C/Ruby 1,8 нити, с другой стороны, являются «зелеными» потоками, о которых ОС ничего не знает. Все потоки в заданном Ruby-процессе будут выполняться на одном процессоре. Тем не менее, вы можете использовать потоки для управления подпроцессами, и эти подпроцессы могут быть запланированы в разных CPU.

+1

В отношении этого вопроса Kernel.system создает подпроцесс, а не поток Ruby. – Pesto

Смежные вопросы