我有升级库的问题.我正在使用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();
}
Run Code Online (Sandbox Code Playgroud)
问题是这段代码不是线程安全的.当我从多个线程中运行它时,我的应用程序崩溃了.现在我已经转换为c-standard函数,如time,mktime等,一切正常,但将来我需要一些提升时间函数.
我也用-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 才能使时间成为线程安全的。
| 归档时间: |
|
| 查看次数: |
559 次 |
| 最近记录: |