module MonitorMixin
Public Class Methods
                              extend_object(obj)
                              click to toggle source
                            
                            
                                  Calls superclass method
                                  
                              
                              # File 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 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 monitor/lib/monitor.rb, line 170 def mon_enter @mon_data.enter end
                              mon_exit()
                              click to toggle source
                            
                            Leaves exclusive section.
# File 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 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 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 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 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 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 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 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