每個正在系統上運行的程序都是一個進程。每個進程包含一到多個線程。
線程是程序中一個單一的順序控制流程,在單個程序中同時運行多個線程完成不同的工作,稱爲多線程。
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