module ThreadSafe
def self.allocate
def self.allocate obj = super obj.send(:_mon_initialize) obj end
def _mon_initialize
def _mon_initialize @_monitor = Monitor.new unless @_monitor # avoid double initialisation end
def self.allocate obj = super obj.send(:_mon_initialize) obj end
def _mon_initialize @_monitor = Monitor.new unless @_monitor # avoid double initialisation end