On Tue, 19 May 2020 12:01:54 -0400, David Storrs <[email protected]> wrote:
>I'm using the file-watchers module to keep an eye on a directory tree and >trigger various actions whenever something changes. I had an issue where >an exception was thrown, the thread died, and file watching therefore >stopped. The immediate solution is to wrap a with-handlers around it so it >doesn't end up killing the thread, but this made me wonder if there's an >easy way to do this automatically? > >What I'm thinking of is "Create a thread that will do something in a loop. >Ensure that the thread remains running and restart it if it dies for any >reason. Also, make sure that it runs periodically." I can think of a >solution involving multiple threads, channels, and polling to ensure that >the 'daemonized' threads are running, but I was wondering if there's a >built-in or existing answer. There is a package called "thread-utils" which claims error safe looping threads. https://pkgs.racket-lang.org/package/thread-utils *Disclaimer* I have never tried it. I can think of a some possible implementations, but they all involve monitoring by a separate thread (which could be the main thread). Channels aren't necessary - monitoring can be done using events. Restarting a (possibly failed) computation IN a running thread is relatively simple - if you know what errors or events might occur. The problem is that a thread can't restart itself if somehow it gets suspended or killed. George -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/uvi8cftuuvfkq0cqm27m0icvhhq5mpupuo%404ax.com.

