[chuck-users] Killing thread from without
haberg at math.su.se
Tue Apr 21 16:12:19 EDT 2009
On 21 Apr 2009, at 21:32, Kassen wrote:
> Like this?
> fun void foo()
> second => now;
> spork ~foo() @=> Shred bar;
> 3::second => now;
> second => now;
I think that tried that one, and it didn't work. Possibly because it
gets stuck in <delay> => now; - your example allows jumping out of it
in the 'while-loop.
> Sadly there is currently a bug when we define a Shred object and
> later assign a actual shred to it; this will crash ChucK. This bug
> was likely caused by the last update which attempted to clean up the
> relationship between Shred objects and actual running processes
> (this wasn't always a very clear relationship).
I didn't try that one (I think) - I used references @=>, both in an
array, and as a single global variable. exit() on such a reference
while the thread was stuck in '<delay> => now' didn't work.
> You can also have the Shred report it's number using me.id() inside
> that shred and set Machine.remove(int id ) loose on that.
> If this crashing bug bothers you (and it likely will) you can use
> this construct to get a shred's id number while sporking it;
> <<<(spork ~foo()).id()>>>;
> This integer can then be used with Machine.remove() to remove the
So this is perhaps what I should try, though using exit() on the thread.
> There are more illustrations in /examples/shred/
> I think that should get you out of trouble? I can't recommend the /
> examples/ directory highly enough as a resource.
I grepped 'exit()' on the whole examples directory, but all finds were
'my.exit()', so it did not seem to apply.
More information about the chuck-users