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

継続セマンティクス法

継続セマンティクス法は、従来から行われてきたシグナル処理方法です。これは、シグナルハンドラから復帰したときに割り込みが発生した時点から実行を再開する方法です。この方法は、シングルスレッドのプロセスで非同期シグナルを扱うのに適しています (詳細は、例 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);
}