摘自《程序员的自我修养》
一个函数被重入,表示这个函数没有执行完成,由于外部因素或内部调用,又一次进入该函数执行。 一个函数要被重入,只有两种情况:
1) 多个线程同时执行这个函数
2)函数自身(可能是经过多层调用之后)调用自身。
一个函数被称为可重入的,表明该函数被重入后不会产生任何不良后果。一个函数要成为可重入的,必须具有如下几个特点:
1)不使用任何(局部)静态或全局的非const变量
2)不返回任何(局部)静态或全局的非const变量
3)仅依赖于调用方提供的参数
4)不依赖任何单个资源的锁(mutex等)
5)不调用任何不可重入的函数