2010-02-04 2 views
3

Есть ли более объектно-ориентированная альтернатива использованию gettimeofday() в C++ на linux? Мне нравится, например, чтобы иметь возможность писать код, подобный этому:Какая лучшая альтернативная библиотека gettimeofday() в C++?

DateTime now = new DateTime; 
DateTime duration = new DateTime(2300, DateTime.MILLISECONDS) 
DateTime deadline = now + duration; 

while(now < deadline){ 
    DoSomething(); 
    delete now; 
    now = new DateTime() 
} 

Целью является встроенной системой Linux и нет Повышения библиотеки, но, может быть, есть что-то, что легко порт (что-то реализованное с заголовком файлы только для примера).

+0

Ой, ох, я пропустил предложение «без ускоренных библиотек». * вздох * – Omnifarious

+2

Ну, Boost.Date_Time должен быть легко переносится. Кроме того, вам не следует выделять локальные объекты с помощью 'new', особенно во встроенной системе. –

ответ

2

Так портирования импульс был не вариант для моей цели. Вместо этого мне пришлось пойти с gettimeofday(). Есть, однако, некоторые хорошие макросы для работы с в структурах формата: первый формат sys/time.h

#include <sys/time.h> 

void timeradd(struct timeval *a, struct timeval *b, 
      struct timeval *res); 

void timersub(struct timeval *a, struct timeval *b, 
      struct timeval *res); 

void timerclear(struct timeval *tvp); 

void timerisset(struct timeval *tvp); 

void timercmp(struct timeval *a, struct timeval *b, CMP); 

потребовалось некоторое время, чтобы найти их, хотя, потому что они не были на страницах руководства по моей машине. См. Эту страницу: http://linux.die.net/man/3/timercmp

0

Я думаю, вы должны быть хорошо с использованием материала из CTime

#include <ctime> 

time 
difftime 
mktime 

должен делать эту работу в очень переносимым способом. cplusplus.com

+0

Я посмотрел на это, но разрешение слишком грубое. Я хочу перейти к миллисекундному разрешению. – mikelong

6

Нет объектно-ориентированного интерфейса для обработки времени и интервалов, которые являются частью стандартной библиотеки C++.

Возможно, вы захотите посмотреть на Boost.Date_Time. Boost настолько полезен и хорошо написан, что его практически часть стандартной библиотеки C++.

0
/usr/include/linux/time.h 

дает структуру: -

struct timeval { 
    time_t  tv_sec;  /* seconds */ 
    suseconds_t tv_usec; /* microseconds */ 
}; 

на Linux, может быть, вы могли бы использовать его ...

Смежные вопросы