Безопасно ли boost :: posix_time :: ptime хранить в карте общей памяти Windows? - PullRequest
1 голос
/ 05 января 2012

Я хочу сохранить объект boost::posix_time::ptime в карте общей памяти Windows для нескольких процессов.

Однако, чтобы это было безопасно, ptime не может иметь указатели на другие места в памяти (т. Е. Это должен быть POD), иначе различные процессы, обращающиеся к карте памяти, столкнутся с проблемами, потому что части ptime объект принадлежит другому процессу.

Так безопасно ли ptime хранить на карте общей памяти Windows?

1 Ответ

1 голос
/ 11 января 2012

Я закончил преобразование буста 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().Для моего случая микросекунды хватило точности.

...