c++ - 如何在 C++ 中处理完整的 CircularBuffer

标签 c++ serial-port buffer

这是一个一般性问题,我是 C++ 的新手,我正在玩一个项目,该项目以 1 毫秒的间隔从工作线程中的串行/USB 端口读取数据到循环缓冲区中,我有另一个 GUI UI 线程每 100 毫秒抓取一次数据。当数据备份并且数据缓冲区变满时会发生什么,我不想阻塞,我需要获取数据,因为它不需要等待。这种情况下的常见做法是什么?我是为“额外”创建另一个缓冲区,还是让原始缓冲区更大?

谢谢

最佳答案

说白了,你完蛋了。

现在,让我们看看事情有多糟糕,有多种方法可以处理缓冲区溢出:

  1. 删除一些数据,可以选择静默删除。您必须决定是从头删除数据还是从尾删除数据效果更好。
  2. 合并一些数据以释放缓冲区中的空间。
  3. 手头有一个紧急缓冲区来捕获溢出。
  4. 中止操作,必须彻底重做。
  5. 忽略错误并假装它永远不会发生。结果可能很有趣,而且出乎意料。
  6. 重新设计以加快交接/处理速度。
  7. 重新设计更大的缓冲区以实现峰值吞吐量。

无论如何,如果您想了解更多相关信息,请查看实时和软实时编程。

关于c++ - 如何在 C++ 中处理完整的 CircularBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35943938/

相关文章:

c++ - 随机访问缓冲区优化

image - 用minio上传图像缓冲区

c# - 从 const char* 复制到字节数组 C++/c# interop Marshal::Copy

c - 无法在 ubuntu 上使用调制解调器读取任何数据

javascript - 从串行端口 -> Chrome 应用程序 -> 网页进行通信。网页启动。

c# - 在C#中等待来自串口的数据

c++ - 链表问题末尾的节点

c++ - 结构一字节对齐与体系结构的对齐要求冲突?

c++ - 重载运算符 == 和 != : compiler moans ambiguity

c++ - 什么时候刷新输出缓冲区和一些基本的 C++