[python] Re: zamykani
    Zdenek Pavlas 
    zdenek.pavlas na nextra.cz
       
    Úterý Březen 18 11:04:14 CET 2003
    
    
  
Martin Kavalec wrote:
> Spis nez skryty mutex bych ocekaval, ze se mutex vytvari, jen kdyz je 
> nejaka metoda deklarovana jako synchronized. (resp. pro kazdy objekt a 
Je mozne ze ten mutex je pridan do objektu teprve ve tride ktera poprve
nadeklaruje nejakou synchronized metodu (a ve vsech podedenych tridach).
> kazdou jeho synchronized metodu se vytvari mutex). Ale specifikaci jsem 
> necetl, ruku do ohne za to nedam.
Mutex chrani data, nikoliv kod. Proto urcite nebude per-method.
> Ale neni to vzdy automaticky, viz napr. dokumentace java.util.HashMap 
> (obdoba dictionary v pythonu) -- pokud potrebujete synchronizovat 
> pristup, musite si o to rict:
> 
> HashMap m = Collections.synchronizedMap(new HashMap());
To bude tim ze HashMap neni datovy typ ale trida ze standardni knihovny.
> K odstraneni globalniho zamku by tedy bylo nutne pridat programatorovi 
> moznost rict si o synchronizaci (volanim nejake funkce, ktera by objektu 
> priradila zamek), nebo nejakou syntaktickou konstrukci (viz 
> synchornized vyse; myslim ze je to opravdu uzitecna konstrukce, bohuzel 
> zasahy do syntaxe by vyzadovaly nove klicove slovo...)
V Pythonu by na to zřejmě šly použít deskriptory:
http://www.python.org/doc/current/whatsnew/sect-rellinks.html#SECTION000320000000000000000
Stejně je nejlepší vše owrapovat sám :), ty 3 řádky kódu se snadno 
copypastujou,
a je hned vidět co se děje...
class Bla:
   def _method (...): ...
   def method (...):
     try:     self.lock.lock (); self._method (...)
     finally: self.lock.unlock ()
-- 
Zdenek Pavlas
Application Developer
NEXTRA Czech Republic s.r.o.  http://www.nextra.cz
    
    
Další informace o konferenci Python