我很难确定将 fsync() 实现到实时系统中的最佳方法是什么。我需要满足的唯一要求是 fsync() 不得破坏帧(每帧 100 Hz - 10 ms)。我做了一些初步的基准测试,我目前倾向于在每次固定大小的写入(大约 1 KB)之后调用 fsync() 直到文件完成。给我的另一个建议是在较慢的任务/线程上调用 fsync() (在整个文件的末尾,或者在这个较慢任务的每一帧)。
通过我描述问题和探索的选项的方式,您可能会猜到我是这方面的新手,但无论如何都会用复杂的东西打我。我可以尝试其他任何实现吗?最有效/最好的方法是什么?
谢谢!
编辑:我运行的操作系统是 Linux。为了执行写入,我使用带有 FILE * 的 C 库来执行文件 I/O。由于这目前发生在 100 Hz 任务上,因此每秒 100 帧,每帧写入 1 KB(仅针对此特定操作,不考虑其他操作员在此帧中其他地方发生的其他写入)。