// signal-4.ck : one event signals 4 shreds

// our event
Event e;

// the base function of our shreds
fun void hi( Event e, string id )
{
    // time/event loop
    while( true )
    {
        // wait on event
        e => now;
        <<<id>>>;
    }
}

// spork our shreds with different strings
spork ~ hi( e, "yo" );
spork ~ hi( e, "hi" );
spork ~ hi( e, "hello" );
spork ~ hi( e, "hey come back here!" );

// may want to yield to give shreds chance to start
me.yield();

// time loop
while( true )
{
    // signal one shred
    e.signal();
    // advance time by 1 second (alternative: me.yield())
    1::second => now;
}
