Class Methods
3.2
View on GitHub
# File tmp/rubies/ruby-3.2.0/ext/monitor/lib/monitor.rb, line 153
def self.extend_object(obj)
super(obj)
obj.__send__(:mon_initialize)
end
No documentation available
.
3.2
View on GitHub
# File tmp/rubies/ruby-3.2.0/ext/monitor/lib/monitor.rb, line 223
def initialize(...)
super
mon_initialize
end
Use extend MonitorMixin or include MonitorMixin instead of this constructor. Have look at the examples above to understand how to use this module.
Instance Methods
3.2
View on GitHub
# File tmp/rubies/ruby-3.2.0/ext/monitor/lib/monitor.rb, line 242
def mon_check_owner
@mon_data.mon_check_owner
end
No documentation available
3.2
View on GitHub
# File tmp/rubies/ruby-3.2.0/ext/monitor/lib/monitor.rb, line 170
def mon_enter
@mon_data.enter
end
Enters exclusive section.
#
3.2
View on GitHub
# File tmp/rubies/ruby-3.2.0/ext/monitor/lib/monitor.rb, line 177
def mon_exit
mon_check_owner
@mon_data.exit
end
Leaves exclusive section.
3.2
View on GitHub
# File tmp/rubies/ruby-3.2.0/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
Initializes the MonitorMixin after being included in a class or when an object has been extended with the MonitorMixin
3.2
View on GitHub
# File tmp/rubies/ruby-3.2.0/ext/monitor/lib/monitor.rb, line 185
def mon_locked?
@mon_data.mon_locked?
end
Returns true if this monitor is locked by any thread
3.2
View on GitHub
# File tmp/rubies/ruby-3.2.0/ext/monitor/lib/monitor.rb, line 192
def mon_owned?
@mon_data.mon_owned?
end
Returns true if this monitor is locked by current thread.
3.2
View on GitHub
# File tmp/rubies/ruby-3.2.0/ext/monitor/lib/monitor.rb, line 201
def mon_synchronize(&b)
@mon_data.synchronize(&b)
end
Enters exclusive section and executes the block. Leaves the exclusive section automatically when the block exits. See example under MonitorMixin.
3.2
View on GitHub
# File tmp/rubies/ruby-3.2.0/ext/monitor/lib/monitor.rb, line 161
def mon_try_enter
@mon_data.try_enter
end
Attempts to enter exclusive section. Returns false if lock fails.
#
3.2
View on GitHub
# File tmp/rubies/ruby-3.2.0/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
Creates a new MonitorMixin::ConditionVariable associated with the Monitor object.