使用htop命令可视化红宝石线程

时间:2019-05-02 11:10:25

标签: ruby multithreading htop

我正在尝试在ruby中使用多线程。我运行了这段代码,它同时运行3个线程(在我的终端中{ruby threads.rb):

arr = []
arr.push(Thread.new do
  1000000.times do |i|
    puts "thread 1"
  end
end)
arr.push(Thread.new do
  1000000.times do |i|
    puts "thread 2"
  end
end)

arr.push(Thread.new do
  1000000.times do |i|
    puts "thread 3"
  end
end)

arr.each {|t| t.join}

我现在在终端的树形视图中运行htop,以查看是否可以实际看到3个不同的线程:

enter image description here

我认为进程threads.rb是突出显示的代码正下方的行,但是我看不到我启动的三个线程是threads.rb进程的分支。 红宝石线程与htop显示的线程和进程无关吗?有没有办法可视化我的threads.rb进程中运行的不同红宝石线程。

1 个答案:

答案 0 :(得分:1)

这取决于您的Ruby解释器。 MRI应该为每个Ruby线程分配一个本地线程。我已经运行了您的脚本,并且可以在htop中看到线程(有3个以上的线程,但这必须是解释程序要做的事情):

htop

尝试在htop中设置过滤器(点击F4并输入ruby作为过滤器字符串)。

编辑:我已经在Debian上进行了测试。在MacOS上的htop显然没有显示线程。