每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。
线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程。
Ruby 中我们可以通过 Thread 类来创建多线程,Ruby的线程是一个轻量级的,可以以高效的方式来实现并行的代码。
def function1
i = 0
while i<=50
puts "func1 at : #{Time.now}"
sleep(2)
i=i+1
end
end
def function2
j = 0
while j<=50
puts "func2 at : #{Time.now}"
sleep(1)
j=j+1
end
end
start = Time.now
t1 = Thread.new{function1}
t2 = Thread.new{function2}
t1.join
t2.join
end_time = Time.now
puts "used :"+(end_time-start).to_s
查看程序运行占用cpu情况:top -p $(pgrep ruby)
pstack查看进程所有线程的执行栈,里面有当前执行到哪一个函数, 函数的调用关系等:pstack $(pgrep ruby)
查看程序进程树:pstree -p pid