gpt4 book ai didi

c++ - 在时区之间转换时间的线程安全方法

转载 作者:太空狗 更新时间:2023-10-29 20:47:11 26 4
gpt4 key购买 nike

我正在编写一个将 utc 时间转换为不同时区的应用程序,现在我可以使用类似这样的东西

putenv("TZ=TIMEZONE1"); 
tzset()
...
do time conversions

但我不认为它是线程安全的,所以是否有任何 C/C++ 库可以通过将时区作为函数参数而不是全局参数来进行时区转换

最佳答案

您可能需要自己的能够处理时区的代码/库。标准库的处理非常落后,不适合处理比在程序生命周期内固定的单个时区更复杂的任何东西。

不过,一个可能的解决方案是分配共享内存,fork,并更改子进程中的时区,然后通过共享内存传回结果,以便在 waitpid 之后读取 返回父级。这有点昂贵,但并不像听起来那么糟糕,因为 fork 在现代系统上速度很快。我的经验是 1 个 fork 等于 2-3 个 pthread_create 调用,1 个 pthread_create 调用等于 2-3 个 open电话。由于更改时区需要打开一个或多个文件并对它们执行 IO,因此您可能不会将总时间成本增加超过 3-5 倍。如果您可以为您正在使用的每个时区保留一个子进程,那么它当然会更有效率。

关于c++ - 在时区之间转换时间的线程安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6257515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com