不可靠信号

4.不可靠的信号

很多人看到了不可靠的信号这一章节,就认为因为额信号会丢失所以是不可靠的,其实这么理解是不对的,不可靠的信号是指信号的行为不可靠。

信号的处理就好比现在 LZ 正在写这篇博文,忽然来了一个电话,于是打断了手头的工作,先接电话去了。

信号处理函数的执行现场不是程序员布置的,而是内核布置的,因为程序中不会有调用信号处理函数的地方。

同一个信号处理函数的执行现场会被布置在同一个地方,所以当一次信号处理函数未执行完成时再次触发了相同的信号,信号处理函数发生了第二次调用,

则第一次调用的执行现场会被覆盖。

5.可重入函数

可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。

//c code

static int tmp;

void func1(int* x, int* y) {

    tmp=*x;

    *x=*y;

    *y=tmp;

}

void func2(int* x, int* y) {

    int tmp;

    tmp=*x;

    *x=*y;

    *y=tmp;

}

func1是不可重入的,func2是可重入的。因为在多线程条件下,操作系统会在func1还没有执行完的情况下,切换到另一个线程中,那个线程可能再次调用func1,

这样状态就错了。

你可能感兴趣的:(不可靠信号)