localtime_s函数的用法 为什么localtime函数是线程不安全的?

为什么localtime函数是线程不安全的?根据Localtime函数的原型定义进行分析struct TM*Localtime(const time)函数返回struct TM指针,在函数描述中不要求

为什么localtime函数是线程不安全的?

根据Localtime函数的原型定义进行分析

struct TM*Localtime(const time)函数返回struct TM指针,在函数描述中不要求是自由的,证明TM对象不是malloc或new。那么TM必须是Localtime函数中的全局变量或局部静态变量。

这样的变量在多线程访问时会出现问题。第一个线程在返回Localtime之前更改变量的值,第二个线程再次更改变量,依此类推。这样,当第一个线程实际返回时,值被更改了很多次,这是一个典型的函数重入问题。

因此,Localtime函数线程不安全。