Визуализация рубиновых потоков с помощью команды htop - PullRequest
2 голосов
/ 02 мая 2019

Я экспериментирую с многопоточностью в 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?Есть ли способ визуализации различных потоков ruby, запущенных внутри моего процесса threads.rb.

1 Ответ

1 голос
/ 02 мая 2019

Это зависит от вашего переводчика Ruby. MRI должен выделить собственный поток для каждого потока Ruby. Я запустил ваш скрипт и вижу потоки в htop (их более 3, но интерпретатор должен это делать):

htop

Попробуйте установить фильтр в htop (нажмите F4 и введите ruby в качестве строки фильтра).

РЕДАКТИРОВАТЬ: я тестировал на Debian. htop на MacOS явно не показывает темы.

...