[Zope-dev] thread safety in external methods
   
    Robin Becker
     
    robin@jessikat.demon.co.uk
       
    Fri, 20 Aug 1999 12:02:07 +0100
    
    
  
How do I do thread safety inside an External method.
I want to access a global singleton as
def __ZGA():
    if not hasattr(sys.modules['__main__'],'__ZGA'):
        #unsafe here...
        Z=ZGA_calculator()
        # initialise things to do with Z
        sys.modules['__main__'].__dict__['__ZGA']=Z
    return sys.modules['__main__'].__dict__['__ZGA']
the problem is controlling access to sys.modules['__main__'].__dict__['__ZGA']. I can't have a
global lock inside my external method as I get a different environment with each call (which is
why I need the singleton in the first place).
It would be sufficient for my purposes if I could guarantee to get certain code run just once
at startup time.
Do I have to make a product or is there some easier way to do this.
-- 
Robin Becker