一个线程安全的函数可以同时被多个线程调用,即便是这些调用使用了共享数据。因为该共享数据的所有实例都被序列化了。
一个可重入的函数也可以同时被多个线程调用,但是只能是在每个调用使用自己的数据时。
因此,一个线程安全的函数总是可重入的,但是一个可重入的函数不总是线程安全的。
推而广之,如果只要每个线程使用一个类的不同实例,该类的成员函数就可以被多个线程安全地调用,那么这个类被称为可重入的;如果即使所有的线程使用一个类的相同实例,该类的成员函数也可以被多个线程安全调用,那么这个类被称为线程安全的。