2021-01-20 Ruby Thread and ThreadGroup
macOS ps with threads
pid 71826 のプロセス内で複数スレッドを上げた場合の表示。
$ ps M 71826
USER PID TT %CPU STAT PRI STIME UTIME COMMAND
toshimaru 71826 s033 0.0 S 31T 0:00.05 0:00.11 ruby th
71826 0.0 S 31T 0:00.00 0:00.00
71826 0.0 S 31T 0:00.00 0:00.00
71826 0.0 S 31T 0:00.00 0:00.00
...
71826
というプロセスIDに対して複数のスレッドが立ち上がっていることがわかる。
ちなみにM
の意味は下記の通り。
-M Print the threads corresponding to each task.
Ruby ThreadGroup
スレッドグループを表すクラスです。グループに属する Thread をまとめて操作することができます。
tg = ThreadGroup.new
t1 = Thread.new { sleep }
t2 = Thread.new { sleep }
puts "t1 is #{t1}" # => t1 is #<Thread:0x50bef60>
puts "t2 is #{t2}" # => t2 is #<Thread:0x50beed0>
tg.add(t1)