// signal.ck : signaling events

// declare an event
Event e;

// declare function
fun void hi( Event e )
{
    // wait on event e
    e => now;

    // this only happens AFTER e is signaled
    <<<"success">>>;
}

// spork shred with e
spork ~ hi( e );

// yield to give the shred a chance to run (alternative: advance time)
me.yield();

// signal e
e.signal();

// advance time to let the other shred run
// (the parent shred will free the child shred)
// (alternative: me.yield())
1::samp => now;
