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)