Boost ptime在MinGW下不是线程安全的
Boost ptime under MinGW not thread safe
我有一个boost库的问题。我正在使用MinGW与gcc 4.5.2编译以下代码:
unsigned long GetEpochSeconds()
{
using namespace boost::posix_time;
using namespace boost::gregorian;
ptime now(second_clock::universal_time());
ptime epoch(date(1970,1,1));
time_duration diff = now-epoch;
return diff.total_seconds();
}
问题是这个代码不是线程安全的。当我在多个线程中运行它时,我的应用程序崩溃了。现在我已经转换为c标准函数,如时间,mktime等,一切都很好,但在未来,我将需要一些boost时间函数。
我也在编译-D_REENTRANT,但这没有帮助。
谢谢你的建议
检查您的代码是否调用gmtime()或gmtime_r()(对此使用调试器)。请参阅http://www.boost.org/doc/libs/1_48_0/boost/date_time/c_time.hpp,并注意必须定义BOOST_DATE_TIME_HAS_REENTRANT_STD_FUNCTIONS,以便获得线程安全的时间。
相关文章:
- 如何将元素添加到数组的线程安全函数?
- C++中的线程安全删除
- 在std::thread中,joinable()然后join()线程安全吗
- 在c++队列中使用pop和visit实现线程安全
- 以线程安全的方式调用"QQuickPaintedItem::updateImage(const QImage&image)"(no QThread)
- 全局变量 多读取器 一个写入器多线程安全?
- 共享队列的线程安全
- boost::文件系统::recursive_directory_iterator多线程安全
- 以线程安全的方式转换 C/C++ 中时区名称字符串的时区偏移量
- 线程安全运算符<<
- 如何使缓存线程安全
- C++线程安全:如果只有一个线程可以写入非原子变量,但多个线程从中读取. 会遇到问题吗?
- 提升精神 V2 Qi 语法线程安全吗?
- asio 链对象线程安全吗?
- 线程安全队列 c++
- 提供对不同类型的数据(建议、代码审查)的线程安全访问的类
- 如何以线程安全的方式更改目录?
- 线程安全的引用计数队列C++
- 析构函数和线程安全
- 适用于大型数组的无复制线程安全环形缓冲区