new()
We track Thread objects, instead of just using counters, because we need exclusive locks to be reentrant, and we need to be able to upgrade share locks to exclusive.
# File activesupport/lib/active_support/concurrency/share_lock.rb, line 17 def initialize super() @cv = new_cond @sharing = Hash.new(0) @waiting = {} @exclusive_thread = nil @exclusive_depth = 0 end