我有一个需求,需要缓冲大量数据(以GB为单位),以备将来使用。由于没有足够的RAM来缓冲这么多数据,所以我决定将数据存储在文件中。
现在的问题是,在我将数据写入文件时,其他线程可能需要那些“缓冲”数据,因此每次写入数据时都必须刷新文件流。确切地说,数据是视频帧,我将其作为预录制数据(就像 TiVo 一样)进行缓冲,其他线程可能会在任何给定时间点上想要写入它,但当他们这样做时,他们从文件中读取并处理帧。
通常情况下,fwrite-fflush 组合需要大约 150 微秒,但偶尔(而且相当经常),这个组合需要超过 1.5 秒。我不能承受这样的延迟,因为我必须实时处理帧。
我有很多问题:
我的缓冲数据到文件的方法正确吗?我还有哪些备选方案?
你有什么想法,为什么 fwrite-fflush 操作有时突然需要更长的时间?请注意,它在一次 1.5 秒后会恢复到 150 微秒。