I have a program that has a main GUI and a camera. In the main GUI, you can
manipulate the images taken by the camera. You can also use the menu to check
the camera's settings. Images are taken by the camera in a separate thread, so
the long exposures don't block the GUI. I block conflicts between the camera
snapshot thread and the main thread by setting a flag called self.cameraActive.
I check to see if the cameraActive flag is false and set the cameraActive to
True just before starting the thread. I generate an event on exiting the thread
which sets the cameraActive flag to False. I also check and set and reset the
flag in all the menu commands that access the camera. Like this.
def onProperties(self, event):
""" Display a message window with the camera properties
event -- The camera properties menu event
"""
# Update the temperature
if not self.cameraActive:
self.cameraActive = True
self.camera.getTemperature()
camDict = self.camera.getPropertyDict()
self.cameraActive = False
else:
camDict = {'Error': 'Camera Busy'}
dictMessage(camDict, 'Camera Properties')
This works but my question is, is there a better way using semaphores, locks or
something else to prevent collisions between threads?
Thanks
--
http://mail.python.org/mailman/listinfo/python-list