Feature #17853
Updated by komamitsu (Mitsunori Komatsu) over 3 years ago
# Abstract
New method `Thread#thread_id` to get associated thread id (LWP.) It might return `nil` if OS doesn't support thread id or equivalent.
# Background
When I tried to investigate which Ruby thread of an application is busy, I did the following steps
- checked the CPU usage of the Ruby application's threads using `ps -eLf` or `top` (with H key) and got which thread is busy
- dumped all the threads of the application using https://github.com/frsyuki/sigdump
- tried to find a busy thread in the thread dump result, but the thread dump doesn't contain thread id...
`Thread` class itself has no method to get associated thread id. If the class has `#thread_id` or something, I can create a PR on `sigdump` project to add `thread id` in thread dump output to make investigations with thread dump much easier.
`Thread#name` may seem an alternative to `Thread#thread_id`, but `Thread#name` just returns a value that's set through `Thread#name=` while `Thread#thread_id` returns a thread id that OS or something has assigned.