gpt4 book ai didi

c++ - 在 ab 中调用函数(C/C++)的官方方法是什么?在 Linux 上每 1/100 秒?

转载 作者:IT王子 更新时间:2023-10-29 01:15:01 25 4
gpt4 key购买 nike

我有一个用 C++ 编写的异步数据流系统。在数据流架构中,应用程序是一组组件实例,它们在启动时被初始化,然后它们通过预定义的消息相互通信。有一种称为 Pulsar 的组件类型,它向连接到它的其他组件(例如延迟)提供“时钟信号消息”。它每 X 毫秒触发一次消息(调用数据流调度程序 API),其中 X 是“频率”参数的值,以毫秒为单位给出。

简而言之,任务就是每隔 X 毫秒调用一个函数(方法)。问题是:最好的/官方的方法是什么?有什么规律吗?

我找到了一些方法:

  • 使用 SIGALRM。我认为,信号不适合这个目的。虽然分辨率是1秒,但是太难得了。
  • 使用硬件中断。我不需要这种精确性。此外,我知道使用与硬件相关的解决方案(服务器是为多个平台编译的,例如 ARM)。
  • 测量耗时,并使用 usleep() 直到下一次调用。我不确定这是测量时间的最佳方法,通过 5 个线程调用与时间相关的系统调用,每个线程 10 次第二 - 但也许我错了。
  • 使用实时内核函数。我对此一无所知。另外,我不需要 Crystal 精确调用,它不是原子 react 器,我无法在某些平台上安装 RT 内核(另外,2.6.x 内核可用)。

也许,最好的答案是音频/视频播放器源代码的简短注释部分(我自己无法找到/理解)。

更新(@MSalters 要求):DF 项目的合著者正在使用 Mac OSX,因此我们应该找到适用于大多数 Posix 兼容操作的解决方案。系统,不仅在 Linux 上。也许,将来会有一个使用 BSD 或一些受限 Linux 的目标设备。

最佳答案

如果您不需要硬实时保证,usleep 应该可以胜任。如果您想要硬实时保证,则需要基于中断或基于实时内核的功能。

关于c++ - 在 ab 中调用函数(C/C++)的官方方法是什么?在 Linux 上每 1/100 秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3699266/

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