我正在读取多个小文件并将它们输出到一个 5 秒长的文件中。我无法控制输入文件何时进入,它们有多大,每个文件中包含的时间长度等。我想每 5 秒输出一个完整文件,其中每个文件中的所有数据在 5 秒间隔内生成。我希望它以准流式方式运行,没有缓冲文件并在未来 5 秒内创建输出。
在这种情况下,我必须通过休眠和唤醒极点来处理不存在输入文件的情况以获取新值。但是,当我达到 5 秒标记时,我还需要停止睡眠/轮询,以便输出新的 5 秒块。这意味着我必须与时钟进行一些比较才能知道是否已经过了 5 秒并且我已准备好输出我的结果。
我想知道这些挂钟检查中的每一个是否都会成为对操作系统的系统调用,需要付出所有代价?如果可能,无需太多努力,我宁愿尽量减少 CPU 调用以获取挂钟(主要是为了节省 CPU,我将进行非常快速的轮询,并且数十个应用程序中的每一个的持续 CPU 调用实际上可能会烧掉一些中央处理器)。我更喜欢的是一个不依赖 cpu 周期并且只偶尔调用操作系统来重新同步它的内部计时器的系统。现在对于这个程序,我不值得特意去实现任何复杂的东西,但这让我感到好奇。c++ 语言是否已经创建了任何方法来执行我所描述的操作,使用 cpu 时间并间歇性地同步到挂钟,或者每次我尝试获取时间时它们总是进行系统调用?
谢谢