我想boost::posix_time::ptime
在 Windows 共享内存映射中为多个进程存储一个对象。
但是,为了安全起见,ptime
不能有指向内存中其他位置的指针(即它必须是 POD),否则访问内存映射的各种进程将遇到问题,因为ptime
对象的一部分由另一个进程拥有。
那么ptime
存储在 Windows 共享内存映射中是否安全?
我想boost::posix_time::ptime
在 Windows 共享内存映射中为多个进程存储一个对象。
但是,为了安全起见,ptime
不能有指向内存中其他位置的指针(即它必须是 POD),否则访问内存映射的各种进程将遇到问题,因为ptime
对象的一部分由另一个进程拥有。
那么ptime
存储在 Windows 共享内存映射中是否安全?
我最终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()
. 对于我来说,微秒就足够了。