一、什么是重入?
函数在执行时,由于外部原因或内部调用,又一次进入该函数执行。
二、重入发生场景
- 多个线程同时执行该函数
- 函数自身调用自身
三、什么是可重入
在相同的输入下,函数每次被调用产生的结果相同。
栗子:
int add(int a, int b)
{
return a + b;
}
每次调用add(1, 2),得到的结果都是3.
四、可重入的函数必须具备哪些特点
- 不使用任何静态或全局的非const对象
- 不返回任何静态或全局的非const对象的指针
- 只依赖于调用方提供的参数
- 不依赖任何单个资源的锁
- 不调用任何不可重入的函数