Class: ActiveRecord::ConnectionAdapters::ConnectionPool::BiasableQueue::BiasedConditionVariable
- Inherits:
 - 
      Object
      
        
- Object
 - ActiveRecord::ConnectionAdapters::ConnectionPool::BiasableQueue::BiasedConditionVariable
 
 
- Defined in:
 - lib/active_record/connection_adapters/abstract/connection_pool.rb
 
Overview
:nodoc:
Instance Method Summary collapse
- #broadcast ⇒ Object
 - #broadcast_on_biased ⇒ Object
 - 
  
    
      #initialize(lock, other_cond, preferred_thread)  ⇒ BiasedConditionVariable 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
semantics of condition variables guarantee that
broadcast,broadcast_on_biased,signalandwaitmethods are only called while holding a lock. - #signal ⇒ Object
 - #wait(timeout) ⇒ Object
 
Constructor Details
#initialize(lock, other_cond, preferred_thread) ⇒ BiasedConditionVariable
semantics of condition variables guarantee that broadcast, broadcast_on_biased, signal and wait methods are only called while holding a lock
      235 236 237 238 239 240  | 
    
      # File 'lib/active_record/connection_adapters/abstract/connection_pool.rb', line 235 def initialize(lock, other_cond, preferred_thread) @real_cond = lock.new_cond @other_cond = other_cond @preferred_thread = preferred_thread @num_waiting_on_real_cond = 0 end  | 
  
Instance Method Details
#broadcast ⇒ Object
      242 243 244 245  | 
    
      # File 'lib/active_record/connection_adapters/abstract/connection_pool.rb', line 242 def broadcast broadcast_on_biased @other_cond.broadcast end  | 
  
#broadcast_on_biased ⇒ Object
      247 248 249 250  | 
    
      # File 'lib/active_record/connection_adapters/abstract/connection_pool.rb', line 247 def broadcast_on_biased @num_waiting_on_real_cond = 0 @real_cond.broadcast end  | 
  
#signal ⇒ Object
      252 253 254 255 256 257 258 259  | 
    
      # File 'lib/active_record/connection_adapters/abstract/connection_pool.rb', line 252 def signal if @num_waiting_on_real_cond > 0 @num_waiting_on_real_cond -= 1 @real_cond else @other_cond end.signal end  | 
  
#wait(timeout) ⇒ Object
      261 262 263 264 265 266 267 268  | 
    
      # File 'lib/active_record/connection_adapters/abstract/connection_pool.rb', line 261 def wait(timeout) if Thread.current == @preferred_thread @num_waiting_on_real_cond += 1 @real_cond else @other_cond end.wait(timeout) end  |