<div class="gmail_quote">On Wed, Jul 18, 2012 at 4:10 AM, Bardur Arantsson <span dir="ltr">&lt;<a href="mailto:spam@scientician.net" target="_blank">spam@scientician.net</a>&gt;</span> wrote:</div><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The most robust way is probably to use a completely independent<br>
supervisor program, e.g. &quot;upstart&quot;, &quot;systemd&quot;, &quot;runit&quot;, etc. These<br>
usually have facilities for restarting the supervised program, and a<br>
rate limit on exactly how often to try that (over a given period of time).<br>
<br>
These *won&#39;t* work for a program that&#39;s deadlocked because an important<br>
thread has died. For that you&#39;ll need either a watchdog (external) or an<br>
in-program mechanism for &quot;supervised threads&quot; which can catch any and<br>
all exceptions and restart threads as necessary. This tends to very<br>
domain-specific, but you might take some inspiration for the way<br>
supervisor hierarchies work in the actor model.</blockquote><div><br></div><div>Hi Bardur, the &quot;supervised threads&quot; sounds like a good approach for me. Thanks!</div></div>