gpt4 book ai didi

c++ - 在C++中获取以毫秒为单位的时间差

转载 作者:行者123 更新时间:2023-11-30 04:13:25 26 4
gpt4 key购买 nike

我正在尝试获取两个时间戳之间的时间差。线程在两个时间戳之间休眠。但是当我得到区别时,它不会给我线程休眠的时间。我的代码如下。

#include <iostream>
#include <locale>
#include <sys/time.h>
#include <cstdlib>
#include <unistd.h>

using namespace std;

int timeInMilli();

int main()
{
timeval t;
timeval t2;
gettimeofday(&t, NULL);
gettimeofday(&t2, NULL);

std::string buf(20, '\0');
std::strftime(&buf[0], buf.size(), "%H:%M:%S:", localtime(&t.tv_sec));

std::string hr = buf.substr(0, 2);
std::string min = buf.substr(3, 2);
std::string sec = buf.substr(6, 2);

/*std::cout << hr << '\n';
std::cout << min << '\n';
std::cout << std::atoi(sec.c_str()) << '\n';*/

int a = timeInMilli();
usleep(10);
int b = timeInMilli();

cout << b-a << endl;
}

int timeInMilli()
{
timeval t;
gettimeofday(&t, NULL);

string buf(20, '\0');
strftime(&buf[0], buf.size(), "%H:%M:%S:", localtime(&t.tv_sec));
string str_hr = buf.substr(0, 2);
string str_min = buf.substr(3, 2);
string str_sec = buf.substr(6, 2);

int hr = atoi(str_hr.c_str());
int min = atoi(str_min.c_str());
int sec = atoi(str_sec.c_str());
int milli = t.tv_usec/1000;

/*cout << hr << endl;
cout << min << endl;
cout << sec << endl;
cout << milli << endl;*/

int timeInMilli = (((hr * 60) + min) * 60 + sec) * 1000 + milli;
return timeInMilli;
}

最佳答案

usleep(10);

意味着您暂停 10 µsec 而不是 10 msec 因为 usleep 以微秒为单位工作。试试

usleep(10000);

关于c++ - 在C++中获取以毫秒为单位的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19423628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com