多线程编程指南

延续语义

延续语义是传统的处理信号的方式。信号处理程序返回时,将控制恢复进程在中断时所处的位置。此控制恢复非常适合于单线程进程中的异步信号,如示例 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);

}