マイクロスレッド

マイクロスレッド講座


マイクロスレッドは決して難しい概念ではありません。
むしろ、マイクロスレッドを使った方が、
プログラムが簡単になるのです。

このページは激しく未完成です。 加筆・修正してくれる方はお願いします。



マイクロスレッドの使い方


マイクロスレッドは 「task」 というキーワードを使って定義します。マイクロスレッドは関数と同様引数を取ることができます。そして、「yield」 というキーワードで、処理を中断することが出来ます。
まあ、基本的な使い方は関数やサブルーチンとほぼ同じです。 関数やサブルーチンが使えるならばマイクロスレッドもすぐに使えるようになるでしょう。

task [任意の名前]([仮引数1], [仮引数2]...) {
    loop {
        [処理]
        yield;
    }
}

例:@Initialize内で呼び出すと1フレームに1発自機狙いの弾が撃たれます。

    
task Test
{
    loop {
        CreateShot01(GetX, GetY, 2, GetAngleToPlayer, BLUE01, 10);
        yield;
    }
}

マイクロスレッドの動き


マイクロスレッドは、関数やルーチンの中断/再開ができるものでした。
もちろん、これらのように終わりが来れば終わることになります。


//script_enemy_main内
let frame = 0;
@Initalize
{
    Test;//開始
}
 
@MainLoop
{
    if(frame % 120 == 0)
    {
        yield;//さっき中断したとこから
    }
    frame++;
}
 
//省略
 
task Test
{
    CreateShot01(GetCenterX, GetClipMinY + 120, 5, GetAngleToPlayer(), RED01, 0);
    yield;//中断、次はこの下から
    CreateShot01(GetCenterX, GetClipMinY + 120, 5, GetAngleToPlayer(), BLUE01, 0);
    yield;//中断、次はこの下から
    CreateShot01(GetCenterX, GetClipMinY + 120, 5, GetAngleToPlayer(), YELLOW01, 0);
    //ここまで来るとおしまい
}


こんな風にコードを書くと、赤、青、黄と順番に「中断されながら」撃たれていることがわかります。
関数っぽいのに中断されるんですよ!そこから始められるんですよ!!


さらに、一度に複数立ち上げることができ、まるで並列して処理を行っているような感じになります。 たとえば、パチュリーの「賢者の石」のような弾幕が簡単に作れるようになるのです。

アリスがたくさんの人形を操っているようなイメージです。

  • 最終更新:2016-04-11 04:44:53

このWIKIを編集するにはパスワード入力が必要です

認証パスワード