这是一个一般性问题,我是 C++ 的新手,我正在玩一个项目,该项目以 1 毫秒的间隔从工作线程中的串行/USB 端口读取数据到循环缓冲区中,我有另一个 GUI UI 线程每 100 毫秒抓取一次数据。当数据备份并且数据缓冲区变满时会发生什么,我不想阻塞,我需要获取数据,因为它不需要等待。这种情况下的常见做法是什么?我是为“额外”创建另一个缓冲区,还是让原始缓冲区更大?
谢谢
最佳答案
说白了,你完蛋了。
现在,让我们看看事情有多糟糕,有多种方法可以处理缓冲区溢出:
- 删除一些数据,可以选择静默删除。您必须决定是从头删除数据还是从尾删除数据效果更好。
- 合并一些数据以释放缓冲区中的空间。
- 手头有一个紧急缓冲区来捕获溢出。
- 中止操作,必须彻底重做。
- 忽略错误并假装它永远不会发生。结果可能很有趣,而且出乎意料。
- 重新设计以加快交接/处理速度。
- 重新设计更大的缓冲区以实现峰值吞吐量。
无论如何,如果您想了解更多相关信息,请查看实时和软实时编程。
关于c++ - 如何在 C++ 中处理完整的 CircularBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35943938/