小编Lom*_*mos的帖子

在C++ 20中获取当前日期/时间是否是线程安全的?

简短的问题

在C++ 17之前,C++没有提供线程安全的方式来获取当前时间或日期.这将在C++ 20中修复吗?

长问题

获取当前时间和日期的唯一可移植方法是使用std :: gmtime或std :: localtime函数.从C的早期开始的遗留物,这些函数将实施定义的时期以来的给定时间转换为日历时间(例如,1515153600到Fri,2018年1月5日,格林威治标准时间12:00:00).然而,唯一的缺点是这些函数返回一个指向内部静态变量的指针,而不是线程安全的.更糟糕的是,这个静态变量可能由所有相关函数共享,例如std :: gmtime,std :: localtime和std :: ctime,并且可能在每次调用任何这些函数时被覆盖.因此,如果您正在使用线程并希望定期检查数据争用和未定义行为的风险.

显然,目前的标准在这方面被打破.C++标准委员会是否有任何努力来解决这种情况以及这种情况在C++ 20中的可能性有多大?

c++ time datetime date c++20

12
推荐指数
1
解决办法
736
查看次数

标签 统计

c++ ×1

c++20 ×1

date ×1

datetime ×1

time ×1