Class: ActiveSupport::Concurrency::LoadInterlockAwareMonitor
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: 
          self,
          Monitor
         | |
| Instance Chain: 
          self,
          Monitor
         | |
| Inherits: | Monitor 
 | 
| Defined in: | activesupport/lib/active_support/concurrency/load_interlock_aware_monitor.rb | 
Overview
A monitor that will permit dependency loading while blocked waiting for the lock.
Constant Summary
- 
    EXCEPTION_IMMEDIATE =
    private
    
 # File 'activesupport/lib/active_support/concurrency/load_interlock_aware_monitor.rb', line 11{ Exception => :immediate }.freeze
- 
    EXCEPTION_NEVER =
    private
    
 # File 'activesupport/lib/active_support/concurrency/load_interlock_aware_monitor.rb', line 10{ Exception => :never }.freeze
Instance Method Summary
- 
    
      #mon_enter  
    
    Enters an exclusive section, but allows dependency loading while blocked. 
- #synchronize
Instance Method Details
#mon_enter
Enters an exclusive section, but allows dependency loading while blocked
# File 'activesupport/lib/active_support/concurrency/load_interlock_aware_monitor.rb', line 15
def mon_enter mon_try_enter || ActiveSupport::Dependencies.interlock.permit_concurrent_loads { super } end
#synchronize
[ GitHub ]# File 'activesupport/lib/active_support/concurrency/load_interlock_aware_monitor.rb', line 20
def synchronize Thread.handle_interrupt(EXCEPTION_NEVER) do mon_enter begin Thread.handle_interrupt(EXCEPTION_IMMEDIATE) do yield end ensure mon_exit end end end