用htop命令可视化ruby线程

用htop命令可视化ruby线程,ruby,multithreading,htop,Ruby,Multithreading,Htop,我正在ruby中试验多线程。我运行了这段代码,它同时运行3个线程(ruby threads.rb在我的终端中): 我现在在终端的树状视图中运行htop,查看是否可以看到3个不同的线程: 我认为process threads.rb就在突出显示的那一行下面,但是我看不到我的三个启动的线程是threads.rb进程的分支。。 ruby线程与htop显示的线程和进程无关吗?是否有一种方法可以可视化my threads.rb进程中运行的不同ruby线程 这取决于您的Ruby解释器。MRI应该为每个Rub

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

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

我认为process threads.rb就在突出显示的那一行下面,但是我看不到我的三个启动的线程是threads.rb进程的分支。。
ruby线程与htop显示的线程和进程无关吗?是否有一种方法可以可视化my threads.rb进程中运行的不同ruby线程

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

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


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

您运行的是什么操作系统和Ruby解释器?我在MacOS 10.14.3上,在MRI上测试,没有看到本机线程。没有。我只看到一个ruby threads.rb进程,它似乎是atom的子进程。我也在用macos 10.14.4运行MRI哦,好吧,我在用Debian。似乎
htop
没有在OSX上显示线程:--有一个PR打开,但没有合并。看,嗯。
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}