# 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