boost :: posix_time :: ptime安全存储在Windows共享内存映射中吗?

时间:2012-01-04 21:10:07

标签: c++ boost boost-date-time

我想在一个Windows共享内存映射中存储一个boost::posix_time::ptime对象,用于多个进程。

但是,为了安全起见,ptime不能指向内存中的其他位置(即它需要是POD),否则访问内存映射的各种进程将遇到问题,因为ptime对象归另一个进程所有。

因此ptime可以安全地存储在Windows共享内存映射中吗?

1 个答案:

答案 0 :(得分:1)

我最终将boost ptime转换为基于Unix纪元的微秒,如下所示:

#define MICROSECONDS_PER_SECOND 1000000
boost::posix_time::ptime unixEpoch(boost::gregorian::date(1970, boost::gregorian::Jan, 1));

boost::posix_time::time_duration deltaTime = timestamp - unixEpoch; 
boost::int64_t microsecondsAfterEpoch =
    deltaTime.ticks() / (deltaTime.ticks_per_second() / MICROSECONDS_PER_SECOND);

我可以很容易地使用deltaTime.ticks(),但我还需要跟踪deltaTime.ticks_per_second()。就我而言,微秒足够精确。