--Multipart_Wed_Nov_24_03:45:40_1999-1
Content-Type: text/plain; charset=ISO-2022-JP
¤´¤È¤±¤ó¤Ç¤¹
In message "[ruby-list:18868] Singleton ¤Î instance ¤¬Ê£¿ô¤Ë¤Ê¤ë¤³¤È¤¬¤¢¤ë"
on 99/11/24, Kazuhiro Nishiyama <nishiyama / mx1.tiki.ne.jp> writes:
>require 'singleton'
>
>class C
> include Singleton
> def initialize
> Thread.pass # ¼ÂºÝ¤Ë¤ÏÉáÄ̤Πý¤ò¤·¤Æ¤¤¤ë¤À¤±¡¨Â
åî¾åîä
¾Ôèòåáä®îåäï
îéîóôáîãå®é¾åîä
¾ð îéîóôáîãå®é¾£ ¤Â¤Ä¤Îinstance¤Îid¤¬°ã¤¦¡£
singleton.rb ¤Ë°Ê²¼¤Î¥Ñ¥Ã¥Á¤òÅö¤Æ¤ë¤È¤¤¤¦¤Î¤Ï¤É¤¦¤Ç¤·¤ç¤¦¡£
--Multipart_Wed_Nov_24_03:45:40_1999-1
Content-Type: application/octet-stream; type=patch
Content-Disposition: attachment; filename="singleton.rb.patch"
Content-Transfer-Encoding: 7bit
--- singleton.rb-orig Fri Aug 13 23:28:39 1999
+++ singleton.rb Wed Nov 24 03:42:52 1999
@@ -11,13 +11,17 @@
# a omeSingletonClass.new # error (`new' is private)
module Singleton
+ require "thread"
def Singleton.append_features(klass)
klass.private_class_method(:new)
+ klass.const_set("MUTEX", Mutex.new)
klass.instance_eval %{
def instance
- unless @__instance__
- @__instance__ ew
- end
+ self::MUTEX.synchronize{
+ unless @__instance__
+ @__instance__ ew
+ end
+ }
return @__instance__
end
}
--Multipart_Wed_Nov_24_03:45:40_1999-1--