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



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

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

所以ptime安全存储在Windows共享内存映射?

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

#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()。对于我来说,微秒就足够精确了。

相关内容

  • 没有找到相关文章

最新更新