date的中文 hashset为什么线程不安全?

hashset为什么线程不安全?HashSet实际上是用HashMap实现的。线程不安全集合的存在是为了在不需要多线程的情况下追求速度。为什么localtime函数是线程不安全的?根据Localtim

hashset为什么线程不安全?

HashSet实际上是用HashMap实现的。线程不安全集合的存在是为了在不需要多线程的情况下追求速度。

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

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

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

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

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