[chuck-users] time goes backwards (and I don't like that)
Robert Poor
rdpoor at gmail.com
Fri Mar 13 17:46:38 EDT 2009
I can make time go backwards. Here's the file:
=========================
Event _e;
time _t;
spork ~ beatProcess();
while (true) {
now + 1.00001::second => _t;
_e => now;
<<< "returned from _e => now at", now >>>;
}
fun void beatProcess() {
while (true) {
_t => now;
<<< "broadcasting at", now >>>;
_e.broadcast();
me.yield();
}
}
=========================
And here's the output:
=========================
bash-3.2$ chuck foo.ck
broadcasting at 44100.441000
returned from _e => now at 44100.000000
broadcasting at 88200.441000
returned from _e => now at 88200.000000
broadcasting at 132300.441000
returned from _e => now at 132300.000000
=========================
The "while(true)" shred sets _t to the time at which it wants to be
woken up. Note that (intentionally) the increment is slightly over a
second. It then blocks on event _e.
Meanwhile, the beatProcess() shred blocks until the time in _t, then
triggers event _e to resume execution of the while(true) shred.
What happens:
- the beatProcess shred triggers _e at time 44100.441000
- the while() shred returns from its wait at time 44100.0000
One might think that the while(true) shred woke up *before* _e got
triggered, but Apple isn't yet building computers with tachyon
technology. Can someone tell me what's really going on??? Failing
that, know any doctors who will prescribe a selective serotonin
reuptake inhibitor to keep me from tearing my hair out?
Thanks.
- Rob
More information about the chuck-users
mailing list