Server : Apache System : Linux host44.registrar-servers.com 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64 User : vapecompany ( 2719) PHP Version : 7.4.33 Disable Function : NONE Directory : /opt/alt/ruby18/share/ri/1.8/system/MonitorMixin/ |
Upload File : |
--- !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: