我正在使用 FastRTPS 在单个 Linux 系统上的多个进程之间进行通信。它们以数据包的形式交换信息。每个数据包都有一个独立于其发送或接收时间的时间戳。这样就可以正确使用所传达的信息。
我正在考虑使用:
uint64_t time_in_microseconds = std::chrono::duration_cast
<std::chrono::microseconds>(std::chrono::steady_clock::now()
.time_since_epoch()).count();
Run Code Online (Sandbox Code Playgroud)
获取数据包的时间戳。
但是,单个系统上的进程之间的稳定时钟是否稳定?还是只在单个进程内?
如果不是,系统时钟在正常情况下会变化多少?它会“回到过去”多少?(不手动调整,没有互联网连接,没有时间变化等)
谢谢
编辑:
数据包将用于状态估计和控制算法。例如,传感器数据将从传感器读取过程转移到状态估计过程。状态信息将从估计过程转移到控制过程。这就是为什么我需要能够在整个系统中一致地测量间隔。system_clock 和 stable_clock 似乎都没有提供我需要的。System_clock 是一致的,但不是单调的。稳定时钟在单个进程内是单调且一致的,但据我所知,它在整个系统中不一致?或者是吗?
在 RISC-V 中故意提出非法指令的最简单、最易读和直接的方法是什么?
我知道根据规范,任何“全零”指令(因此 32/16 位只有零)都是“定义的非法指令”(第 12.5 节,用户规范)。但我不知道是否存在一个 asm 简写(至少我找不到任何),然后我可以在 C 代码中的内联 asm 中使用它。
肯定有一种可移植且可靠的方法总是会导致非法指令异常吗?我个人认为写入只读寄存器或类似的黑客行为非常令人反感,因为它们不是很明确。但也许这就是它的做法?
先感谢您