[chuck-users] dangerous games with shreds
eduard aylon
eduard.aylon at gmail.com
Sun Nov 9 20:15:11 EST 2008
Sorry list for bombing you with so many questions, but got this funny
one, which I thought would be interesting to post. The patch below
loops endlessly although no while(true) loop exists in the "main". If
you try the patch, be warn that your computer may (or may not) become
unresponsive. The code makes sense, and the behaviour as well, but
should chuck throw a warning when something like this happens? I came
up with this, while trying to have a process for reading and another
for writing, but didn't want to advance time in any of them.
eduard
class mySpork
{
Event write;
Event read;
fun void start(){ read.signal(); <<<"started">>>; }
fun void Write()
{
// NOTE: time is not advanced in this function
while(true)
{
write => now;
//<<< "writing" >>>;
read.signal();
}
}
fun void Read()
{
// NOTE: time is not advanced in this function
while(true)
{
read => now;
//<<< "reading" >>>;
write.signal();
}
}
}
mySpork myspork;
spork~myspork.Read();
spork~myspork.Write();
me.yield();
myspork.start();
<<< "loops forever">>>;
1::second => now;
<<< "and never gets here">>>;
More information about the chuck-users
mailing list