Увеличить ptime под MinGW не безопасно - PullRequest
6 голосов
/ 28 октября 2011

У меня проблема с буст-библиотекой.Я использую 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-стандартные функции, такие как time, mktime и т. Д., И все работает нормально, но в будущем мне понадобятся несколько функций для повышения времени.это не помогло.

Спасибо за любые предложения.

1 Ответ

2 голосов
/ 16 января 2012

Проверьте, вызывает ли ваш код 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 должен быть определен для того, чтобы получить время, чтобы быть потокобезопасным.

...