一个函数被重入,表示这个函数没有执行完成,由于外部因素或内部调用,又一次进入该函数执行。一个函数要被重入,只有两种情况:
    (1)多个线程同时执行这个函数。
    (2)函数自身(可能是经过多层调用之后)调用自身。
    一个函数被称为可重入的,表明该函数被重入之后不会产生任何不良后果。

    一个函数要成为可重入的,必须具有如下几个特点:

    • 不使用任何(局部)静态或全局的非const变量。
    • 不返回任何(局部)静态或全局的非const变量的指针。
    • 仅依赖于调用方提供的参数。
    • 不依赖任何单个资源的锁(mutex等)。
    • 不调用任何不可重入的函数。

    可重入是并发安全的强力保障,一个可重入的函数可以在多线程环境下放心使用。