| Module | Mutex_m |
| In: |
mutex_m.rb
|
Extend an object and use it like a Mutex object:
require "mutex_m.rb" obj = Object.new obj.extend Mutex_m # ...
Or, include Mutex_m in a class to have its instances behave like a Mutex object:
class Foo
include Mutex_m
# ...
end
obj = Foo.new
# File mutex_m.rb, line 42 def Mutex_m.append_features(cl) super define_aliases(cl) unless cl.instance_of?(Module) end
# File mutex_m.rb, line 32 def Mutex_m.define_aliases(cl) cl.module_eval %q{ alias locked? mu_locked? alias lock mu_lock alias unlock mu_unlock alias try_lock mu_try_lock alias synchronize mu_synchronize } end
# File mutex_m.rb, line 52 def mu_extended unless (defined? locked? and defined? lock and defined? unlock and defined? try_lock and defined? synchronize) Mutex_m.define_aliases(class<<self;self;end) end mu_initialize end
# File mutex_m.rb, line 88 def mu_lock while (Thread.critical = true; @mu_locked) @mu_waiting.push Thread.current Thread.stop end @mu_locked = true Thread.critical = false self end
# File mutex_m.rb, line 77 def mu_try_lock result = false Thread.critical = true unless @mu_locked @mu_locked = true result = true end Thread.critical = false result end
ruby-doc.org is hosted and maintained by James Britt and Happy Camper Studios, a Ruby application development company in Phoenix, Arizona. The site was created in 2002 as part of the Ruby Documentation Project to promote the Ruby language and to help other Ruby hackers.
Documentation content on ruby-doc.org is provided by remarkable members of the Ruby community.
For more information on the Ruby programming language, visit ruby-lang.org.
Want to help improve Ruby's API docs? See Ruby Documentation Guidelines.