系统时间,以毫秒为单位c ++

| 我有一个队列与结构。该结构包括将自己推入队列的确切时间 我有这样的东西来查看系统时间:
time_t rawtime;
struct tm * timeinfo;

time ( &rawtime );
timeinfo = localtime ( &rawtime );

long callTime=timeinfo->tm_hour*3600+timeinfo->tm_min*60+timeinfo->tm_sec;
q.push( Call( callNum, callTime, callLength ));
问题是,当我从队列中弹出下一个结构时,我想计算以毫秒为单位的队列中等待了多长时间。 我希望有人能得到我想说的话..:\\     
已邀请:
您可以使用
gettimeofday
,然后减去存储在队列元素中的时间。
gettimeofday()
可以提供毫秒级的时间分辨率。您可以检查此SO链接以获取更多信息。 这是假设堆栈中的每个元素也都存储了它被压入的时间。如果元素不包含它,则可以将结构与元素和时间一起存储,或者将单独的堆栈与时间一起存储。     
您需要使用功能
gettimeofday()
而不是
time()
。前者支持亚毫秒精度,而后者仅精确到最接近的秒。     
gettimeofday是一个答案,但是如果您只想检查项目在队列中的时间,clock_gettime()可能更合适。 例如,您可以使用CLOCK_MONOTONIC(假设我们不计算秒):
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC,&ts);
// do some action ....
struct timespec ts2;
clock_gettime(CLOCK_MONOTONIC,&ts2);
std::cout << \"spend \" << ts2.tv_nsec - ts.tv_nsec << \" nanoseconds\" << std::endl;
而且,当然,clock_gettime不是C ++的一部分,而是POSIX.1-2008的一部分。     

要回复问题请先登录注册