D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
opt
/
alt
/
ruby18
/
share
/
ri
/
1.8
/
system
/
MonitorMixin
/
Filename :
cdesc-MonitorMixin.yaml
back
Copy
--- !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: