可重入(reentrant)函数

来源:互联网 发布:小米5没有网络 编辑:程序博客网 时间:2024/05/18 17:45

摘自《程序员的自我修养》

 

 一个函数被重入,表示这个函数没有执行完成,由于外部因素或内部调用,又一次进入该函数执行。 一个函数要被重入,只有两种情况:

1) 多个线程同时执行这个函数

2)函数自身(可能是经过多层调用之后)调用自身。

一个函数被称为可重入的,表明该函数被重入后不会产生任何不良后果。一个函数要成为可重入的,必须具有如下几个特点:

1)不使用任何(局部)静态或全局的非const变量

2)不返回任何(局部)静态或全局的非const变量

3)仅依赖于调用方提供的参数

4)不依赖任何单个资源的锁(mutex等)

5)不调用任何不可重入的函数