Your IP : 3.147.49.19
--- !ruby/object:RI::ClassDescription
attributes: []
class_methods:
- !ruby/object:RI::MethodSummary
name: extend_object
- !ruby/object:RI::MethodSummary
name: new
comment:
- !ruby/struct:SM::Flow::P
body: "Adds monitor functionality to an arbitrary object by mixing the module with <tt>include</tt>. For example:"
- !ruby/struct:SM::Flow::VERB
body: " require 'monitor.rb'\n\n buf = []\n buf.extend(MonitorMixin)\n empty_cond = buf.new_cond\n\n # consumer\n Thread.start do\n loop do\n buf.synchronize do\n empty_cond.wait_while { buf.empty? }\n print buf.shift\n end\n end\n end\n\n # producer\n while line = ARGF.gets\n buf.synchronize do\n buf.push(line)\n empty_cond.signal\n end\n end\n"
- !ruby/struct:SM::Flow::P
body: The consumer thread waits for the producer thread to push a line to buf while buf.empty?, and the producer thread (main thread) reads a line from ARGF and push it to buf, then call empty_cond.signal.
constants: []
full_name: MonitorMixin
includes: []
instance_methods:
- !ruby/object:RI::MethodSummary
name: mon_acquire
- !ruby/object:RI::MethodSummary
name: mon_check_owner
- !ruby/object:RI::MethodSummary
name: mon_enter
- !ruby/object:RI::MethodSummary
name: mon_enter_for_cond
- !ruby/object:RI::MethodSummary
name: mon_exit
- !ruby/object:RI::MethodSummary
name: mon_exit_for_cond
- !ruby/object:RI::MethodSummary
name: mon_initialize
- !ruby/object:RI::MethodSummary
name: mon_release
- !ruby/object:RI::MethodSummary
name: mon_synchronize
- !ruby/object:RI::MethodSummary
name: mon_try_enter
- !ruby/object:RI::MethodSummary
name: new_cond
- !ruby/object:RI::MethodSummary
name: synchronize
- !ruby/object:RI::MethodSummary
name: try_mon_enter
name: MonitorMixin
superclass: