module NoSLTD

Constants

THREAD_LOCAL_KEY
VERSION

Public Class Methods

recursive() { |: fiber { yield }| ... } click to toggle source
# File lib/no_sltd.rb, line 5
def self.recursive
  level = (Thread.current[THREAD_LOCAL_KEY] || 0)
  Thread.current[THREAD_LOCAL_KEY] = level + 1
  out = level < 64 ? yield : Fiber.new { yield }.resume
  Thread.current[THREAD_LOCAL_KEY] = level
  out
end