1

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

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

那么ptime存储在 Windows 共享内存映射中是否安全?

4

1 回答 1

1

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

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

于 2012-01-11T18:47:23.697 回答