gpt4 book ai didi

c++ time.h,clock_gettime(),语义错误,如何在Eclipse中链接实时库?

转载 作者:搜寻专家 更新时间:2023-10-31 01:15:56 27 4
gpt4 key购买 nike

我在使用 clock_gettime() 函数时遇到了一些问题。

#include <iostream>
#include <time.h>

timespec timer_start;
timespec timer_end;

clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &timer_start);
// sleep for 5 seconds
boost::this_thread::sleep(boost::posix_time::milliseconds(5000));
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &timer_end);

std::cout << (timer_end.tv_sec - timer_start.tv_sec) << ":" << (timer_end.tv_nsec - timer_start.tv_nsec) << std::endl;

我得到的输出是这样的

0:6934599

计时器似乎只过去了 693 毫秒左右。

我在 Linux gnu gcc 4.6 上使用 g++ -lrt 编译程序。我还收到了一个语义错误,说无法解析符号“CLOCK_PROCESS_CPUTIME_ID”

谢谢。

最佳答案

撇开无法运行编译失败的程序不谈,休眠通常是系统调用:调用内核函数,内核让线程休眠,调度其他线程和进程运行(或CPU进入省电模式)并在请求的时间再次唤醒原始线程。这段时间,休眠线程不会消耗CPU时间。经过的(实际)时间通常称为挂钟时间

将此与代码中 while 循环的实时等待 进行对比,该循环反复检查时钟并仅在 5 秒后终止。这种等待占用其他进程占用的 CPU 时间。

另请注意,6934599 纳秒约为 6.93 毫秒,而不是 693。

关于c++ time.h,clock_gettime(),语义错误,如何在Eclipse中链接实时库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9554624/

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