fix a crash during the update call

This commit is contained in:
Sven Czarnian
2021-09-25 09:03:55 +02:00
parent dc2a435e8e
commit 667829b03d
2 changed files with 16 additions and 3 deletions

View File

@@ -91,8 +91,7 @@ class AMAN:
# find the correct worker for the inbound # find the correct worker for the inbound
for worker in self.workers: for worker in self.workers:
if worker.icao == report.destination: if worker.icao == report.destination:
print('Updated ' + report.aircraft.callsign + ' for ' + worker.icao) worker.acquireLock()
worker.acquire()
worker.reportQueue[report.aircraft.callsign] = report worker.reportQueue[report.aircraft.callsign] = report
worker.release() worker.releaseLock()
break break

View File

@@ -8,6 +8,12 @@ from aman.config.Airport import Airport
class Worker(Thread): class Worker(Thread):
def __init__(self): def __init__(self):
Thread.__init__(self) Thread.__init__(self)
self.stopThread = None
self.icao = None
self.configuration = None
self.arrivalRoutes = None
self.updateLock = None
self.reportQueue = {}
def __del__(self): def __del__(self):
self.release() self.release()
@@ -21,10 +27,18 @@ class Worker(Thread):
self.reportQueue = {} self.reportQueue = {}
self.start() self.start()
def acquireLock(self):
if None != self.updateLock:
self.updateLock.acquire()
def release(self): def release(self):
self.stopThread = True self.stopThread = True
self.join() self.join()
def releaseLock(self):
if None != self.updateLock:
self.updateLock.release()
def run(self): def run(self):
counter = 0 counter = 0