マルチスレッドのプログラミング

継続セマンティクス法

継続セマンティクス法は、従来から行われてきたシグナル処理方法です。シグナルハンドラが終了すると、割り込みが発生した時点からプロセスの実行が再開されます。このような制御の復帰方法は、シングルスレッドプロセスで非同期シグナルを扱うのに適しています。例 5–1 を参照してください。

PL/1 などの一部のプログラミング言語の例外処理機構でも、このような制御の復帰方法が使用されています。


例 5–1 継続セマンティクス法

unsigned int nestcount;

unsigned int A(int i, int j) {
    nestcount++;

    if (i==0)
        return(j+1)
    else if (j==0)
        return(A(i-1, 1));
    else
        return(A(i-1, A(i, j-1)));
}

void sig(int i) {
    printf("nestcount = %d\n", nestcount);
}

main() {
    sigset(SIGINT, sig);
    A(4,4);
}