Hi Tim,

Thanks for the explanations; clearly there's a lot to think about
here!  But I think Futures provide what I'm looking for.  I don't know
if having Agents be cancel-able in general is a good idea or not; the
"Java Concurrency" page suggests not.

-Stuart Sierra


On Feb 1, 6:59 pm, Timothy Pratley <timothyprat...@gmail.com> wrote:
> Hi Stuart,
>
> > One option would be to use a second agent as a flag.  My really-long-
> > action function could periodically check the value of that agent, and
> > terminate if it's been set to true.  But would it be possible to
> > provide a generic interrupt mechanism that doesn't require modifying
> > the action function?
>
> Futures have a cancel method which *attempts* to cancel a task. My
> understanding is that this is a pretty good way to cancel most tasks,
> but does not cover all cases (Non-interruptible Blocking). Here is an
> example of how you might take advantage of 
> that:http://github.com/timothypratley/strive/blob/d21fb78ddf00e8e79dd4a27e...
> When I watch my CPU usage this behaves as I would expect it (ie:
> canceling the task correctly).
>
> I believeAgentscould be adjusted in a similar fashion with
> reasonable ease, by replacing execute with submit and holding a
> reference to it as the currently running task. Alternatively just
> implementing the same cancellation strategy as futures (ie: raise an
> interrupt on the current Action, which would catch interrupts and
> return). I'm happy to submit a patch to that effect given some
> guidance on which if either is a good strategy.
>
> > My use-case is a REPL-like utility that can run each expression the
> > user types in a separate thread, and cankilloff threads that are
> > misbehaving or not terminating.
>
> If you want to cover Non-interruptible Blocking then some additional
> techniques are 
> required:http://book.javanb.com/java-concurrency-in-Practice/ch07lev1sec1.html
> It seems to me that canceling a thread in Java is quite a topic! So
> apologies if my suggestion is too trivial or misses the point.
>
> Regards,
> Tim.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to