ANSI C时间函数不是线程安全的:特别是gmtime
,ctime
和strftime
。据我所知,唯一的线程安全功能是time
。
如果我在Visual Studio中是正确的,那么这个函数都是线程安全的。我正在使用MinGW编译器(4.8.0和dwarf-2,Qt 5.1.0提供的那个)。
gmtime_r
,ctime_r
和strftime_r
如何补充线程的安全功能?或者是否有一个更加线程安全的库?
我使用C ++ 11作为默认语言。
编辑1
我在windows xp上使用MinGW 4.8.0(posix,dwarf-2)。
编辑2
我正在考虑使用Boost.DateTime可能是一个不错的选择吗?
我对c ++ 11时间管理的缺乏感到非常失望!
答案 0 :(得分:2)
gmtime_r
实际上应该有ctime_r
和pthread.h
,但由于某个错误(http://sourceforge.net/p/mingw/bugs/1625/),它们会被临时删除。
你几乎没有选择
lock_guard
制作所有这些功能的可重入包装,就像safe_increment
已完成here chrono
头文件
醇>
答案 1 :(得分:0)
MinGW arleady同时提供gmtime_r和gmtime_s函数,但它们在std
命名空间中注明。