可重入函数

1 分钟阅读 211 字 + 100 词
参考答案
在信号、多线程这些情况下,一个函数在执行过程中,有可能会异步地再重新调用同一个函数。如果重复的函数调用有可能 会导致错乱的结果,那么这些函数就是不可重入的。
一个比较典型的不可重入函数例子就是 malloc 函数, malloc 函数必然是要修改静态数据的 ,为了保证线程安全性, malloc 函数的实现当中会存在加锁和解锁的过程 假如 malloc 执行到加锁之后,解锁之前的时候,此时有信号产生并且递送的话,线程会转向执行信号处理回调函数,假如信号处理函数当中又调用了 malloc 函数,此时就会导致死锁——这就是 malloc 的不可重入性