module MonitorMixin
Public Class Methods
          extend_object(obj)
          click to toggle source
        
        
              Calls superclass method
              
            
          # File ext/monitor/lib/monitor.rb, line 153 def self.extend_object(obj) super(obj) obj.__send__(:mon_initialize) end
          new(...)
          click to toggle source
        
        Use extend MonitorMixin or include MonitorMixin instead of this constructor.  Have look at the examples above to understand how to use this module.
              Calls superclass method
              
            
          # File ext/monitor/lib/monitor.rb, line 223 def initialize(...) super mon_initialize end
Public Instance Methods
          mon_enter()
          click to toggle source
        
        Enters exclusive section.
# File ext/monitor/lib/monitor.rb, line 170 def mon_enter @mon_data.enter end
          mon_exit()
          click to toggle source
        
        Leaves exclusive section.
# File ext/monitor/lib/monitor.rb, line 177 def mon_exit mon_check_owner @mon_data.exit end
          mon_locked?()
          click to toggle source
        
        Returns true if this monitor is locked by any thread
# File ext/monitor/lib/monitor.rb, line 185 def mon_locked? @mon_data.mon_locked? end
          mon_owned?()
          click to toggle source
        
        Returns true if this monitor is locked by current thread.
# File ext/monitor/lib/monitor.rb, line 192 def mon_owned? @mon_data.mon_owned? end
          mon_synchronize(&b)
          click to toggle source
        
        Enters exclusive section and executes the block.  Leaves the exclusive section automatically when the block exits.  See example under MonitorMixin.
# File ext/monitor/lib/monitor.rb, line 201 def mon_synchronize(&b) @mon_data.synchronize(&b) end
          Also aliased as: synchronize
        
      
          mon_try_enter()
          click to toggle source
        
        Attempts to enter exclusive section.  Returns false if lock fails.
# File ext/monitor/lib/monitor.rb, line 161 def mon_try_enter @mon_data.try_enter end
          Also aliased as: try_mon_enter
        
      
          new_cond()
          click to toggle source
        
        Creates a new MonitorMixin::ConditionVariable associated with the Monitor object.
# File ext/monitor/lib/monitor.rb, line 210 def new_cond unless defined?(@mon_data) mon_initialize @mon_initialized_by_new_cond = true end return ConditionVariable.new(@mon_data) end
Private Instance Methods
          mon_check_owner()
          click to toggle source
        
        # File ext/monitor/lib/monitor.rb, line 242 def mon_check_owner @mon_data.mon_check_owner end
          mon_initialize()
          click to toggle source
        
        Initializes the MonitorMixin after being included in a class or when an object has been extended with the MonitorMixin
# File ext/monitor/lib/monitor.rb, line 230 def mon_initialize if defined?(@mon_data) if defined?(@mon_initialized_by_new_cond) return # already initialized. elsif @mon_data_owner_object_id == self.object_id raise ThreadError, "already initialized" end end @mon_data = ::Monitor.new @mon_data_owner_object_id = self.object_id end