Ho codice che assomiglia a qualcosa di simile:python: un modo elegante per gestire il lock su una variabile?
def startSearching(self):
self.searchingLock.acquire()
searching = self.searching
if self.searching:
self.searchingLock.release()
self.logger.error("Already searching!")
return False
self.searching = True
self.searchingLock.release()
#some more init code, then start the thread which
#constantly checks self.searching to determine when to stop
è una specie di brutto, però. un sacco di acquisti e rilasci. questo sembra più bella:
def startSearching(self):
with self.searchingLock:
if self.searching:
self.logger.error("Already searching!")
return False
self.searching = True
#some more init code, then start the thread which
#constantly checks self.searching to determine when to stop
ma questo mantiene il blocco più a lungo di quanto strettamente necessario, se espcially self.logger.error
prende un po '(come se si scrive su disco, cosa che fa). c'è una via di mezzo tra tenere la serratura il meno possibile ma avere un codice più bello?
heh intelligente =) Mi piace – Claudiu
Si potrebbe anche facilmente interrompere le prime 4 linee in un'altra funzione. – user37078