Current Path : /usr/local/share/ri/1.8/system/MonitorMixin/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //usr/local/share/ri/1.8/system/MonitorMixin/cdesc-MonitorMixin.yaml |
--- !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: