Project

General

Profile

ActionsLike1

Bug #20462

open

Native threads are no longer reused

Added by tenderlovemaking (Aaron Patterson) 11 months ago. Updated 9 months ago.

Status:
Assigned
Target version:
-
[ruby-core:117746]

Description

Ruby used to reuse native threads in order to amortize the cost of making a pthread.

For example this program:

ntids = 1000.times.map {
  Thread.new {
    Thread.current.native_thread_id
  }.value
}

p ntids.uniq.length

With Ruby 3.2.0, this would return 1. With Ruby 3.3.x, it returns 1000. It means we cannot amortize the cost of a pthread for short lived threads.

I was able to bisect this to commit be1bbd5b7d40ad863ab35097765d3754726bbd54. But the change is big so I don't know how to fix it.

Updated by byroot (Jean Boussier) 10 months ago · Edited

  • Backport changed from 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN to 3.1: DONTNEED, 3.2: DONTNEED, 3.3: UNKNOWN

Updated by byroot (Jean Boussier) 10 months ago

  • Assignee set to ko1 (Koichi Sasada)
#8

Updated by hsbt (Hiroshi SHIBATA) 9 months ago

  • Status changed from Open to Assigned
ActionsLike1

Also available in: Atom PDF