Tutorial 7. Processes

processはC++にはないplangのprocedureの一種です。
今までのチュートリアルでは全ての処理内容をmain processに記述していましたが、plangでは複数のprocessを同時に処理することができます。
processは以下の形式で定義されます。

process id parameters compound_statement

processはreserved wordです。processは常にこのwordから始まります。
idはcallerがprocessを識別するためのidentifierです。
parameterscompound_statementはfunctionと同様に定義します。

process p(){
    int i=0;
    while(++i<10)
        using::write("p: "+i+"\n");
}

process::p p;


新たにprocess pを開始するためには、process::p型の変数を宣言します。上例では変数pが宣言され、process pが開始されます。process::*はprocessへの参照を持つデータ型で、通常のデータ型の宣言とは扱いが異なります。

process r(int i){
    while(++i<10)
        using::write("r: "+i+"\n");
}

process::r r(-1);

例ではprocess rへ-1を渡して開始しています。

while(!p.exit()||!r.exit()){
    using::write("main: wait\n");
}


process::*型はexitというmethodを持ちます。exit()はprocessが終了している場合にtrueを返します。
例ではpとrが参照するprocessが終了するまで、main process内で"main: wait\n"と出力します。


Next: Tutorial 08. Inline Functions
Prev: Tutorial 06. Functions