c++ tzdb_list有什么用

yftpprvb  于 2023-08-09  发布在  其他
关注(0)|答案(1)|浏览(121)

我看到std::chrono::tzdb_list的引用
tzdb_list是std::chrono::tzdbs的单例列表,每个列表代表IANA时区数据库的一个副本。
为什么我们需要这样一个列表。
当我尝试使用这个列表时,它只有一个项目,我不能修改它。我已经使用tzdb作为时区。
这份名单似乎毫无用处

zxlwwiss

zxlwwiss1#

你几乎是正确的。std::chrono::tzdb_list几乎没用!:-)
但是当你需要它的时候,你真的需要它。
很少有应用程序需要一次运行几个月,甚至几年。这些应用程序需要IANA提供的最新时区数据库。而且这些应用程序通常是高度多线程的。
想想航空公司的预订系统。
这样的应用程序可能有多个线程同时访问时区数据库,并且需要从时区数据库的一个版本升级到下一个版本,而无需停止和重新启动应用程序。
这就是std::chrono::tzdb_list可以保存这一天的地方。在某些操作系统上,函数std::chrono::reload_tzdb()会将一个新的数据库推到原子单链表std::chrono::tzdb_list的前面(如果存在较新的版本)。这允许应用程序以自己的速度从旧版本的时区数据库迁移到新版本,但它可以管理这一点。例如,应用程序可能有自己的原子标志和互斥系统来管理这种转换。
下面是一篇简短的文章,它准确地描述了应用程序如何定期检查新数据库的存在,并在发现时添加一个。这篇文章是为C20的开源先驱而写的,但应该很容易翻译成C20。
Here is the specification用于访问时区数据库的函数。

相关问题