check if thread is running



  • Hey,
    What is best practice for a watchdog in a multithreading system?
    So if one thread has an unhandled exeption, restart that thread?



  • @Gijs Thought of about the same thing. I would just add a short sleep at the end of the loop, so that in case it fails very quickly it doesn't go into a tight loop, especially if the code in the thread is sending anything (over the network or to a device connected via I2C or SPI etc.). Of course it relies on the contents of the function being able to restart a second time.

    I'm not sure this is 100% fool proof as I believe there are cases when some conditions will not result in proper exceptions being thrown, so of course using and feeding WDT (or an external watchdog) may be a good idea as well.


  • Global Moderator

    I'd imagine you could do something like this, but there's probably a better solution that I cannot think of right now. Also I'm not sure whether that also handles exceptions that occur inside foo()

    def thread1():
       while True:
          try:
             #run some code
             foo()
          except:
             #handle all potential errors 
    

    If anyone has a better solution I'm interested as well!


Log in to reply
 

Pycom on Twitter