1

boost::posix_time::ptime複数のプロセスの Windows 共有メモリ マップにオブジェクトを格納したいと考えています。

ただし、これを安全にptime行うには、メモリ内の他の場所へのポインターを保持できません (つまり、POD である必要があります)。そうしないと、ptimeオブジェクトの一部が別のプロセスによって所有されているため、メモリ マップにアクセスするさまざまなプロセスで問題が発生します。

ptimeでは、Windows 共有メモリ マップに格納しても安全でしょうか?

4

1 に答える 1

1

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()ました。私の場合、マイクロ秒で十分な精度でした。

于 2012-01-11T18:47:23.697 に答える