# File lib/puppet/util.rb, line 32 32: def self.synchronize_on(x,type) 33: sync_object,users = 0,1 34: begin 35: @@sync_objects.synchronize { 36: (@@sync_objects[x] ||= [Sync.new,0])[users] += 1 37: } 38: @@sync_objects[x][sync_object].synchronize(type) { yield } 39: ensure 40: @@sync_objects.synchronize { 41: @@sync_objects.delete(x) unless (@@sync_objects[x][users] -= 1) > 0 42: } 43: end 44: end