スレッド

スレッドってなかなか理解しにくいのですが、音楽的に考えると必要だと実感できます。ベースを関数でまとめて、関数でまとめたドラムも同時に鳴らしたい場合は以下のようでは”うまくない”。

fun void bass(){<<<"bass">>>;2::second => now;}
fun void drum(){<<<"drum">>>;2::second => now;}
bass();
drum();

bass()が終了してからdrum()が実行されます。
以下は10秒の間に2秒毎にbassとdrumを同時に表示します。それで同時に実行させるにはsporkを使っています。

fun void bass()
{
    while( true )
    {
        <<<"bass">>>;
        2::second => now;
    }
}
fun void drum()
{
    while( true )
    {
        <<<"drum">>>;
        2::second => now;
    }
}
spork ~ bass();
spork ~ drum();
10::second => now;

ベースのスペル間違えていたので修正。おハズカシイ。