如果在ruby中生成子进程(例如使用Kernel.system),它是否可以使用与父进程不同的CPU?
如果是这样,你可以在父进程中使用多个线程(在同一个CPU中),并让每个线程产生一个可以使用不同CPU的子进程,即使在ruby 1.8中也是如此?
(背景 - 它是来自this superuser question的superscript.rb,但是我不想做所有50个文件夹,而是想快速完成其中一个文件夹。我正在使用Ubuntu Linux。)
答案 0 :(得分:5)
Ruby进程与任何其他进程没什么区别 - 它们由操作系统独立调度,并且可以根据操作系统的突发奇想分布在CPU上。
另一方面,C / Ruby 1.8线程是“绿色”线程,操作系统对此一无所知。给定Ruby进程中的所有线程都将在同一个CPU上运行。但是,您可以使用线程来管理子进程,并且可以跨CPU调度这些子进程。