【发布时间】:2023-03-17 03:59:01
【问题描述】:
我正在编写一个 Qt (4.6) 应用程序,该应用程序负责从 usb acm 调制解调器设备读取数据。从设备中读入原始二进制和(ascii)字符数据的混合体。我有一个线程负责在设备可用时不断地将数据从设备读取到共享内存中,第二个线程负责处理这些数据。
我正在考虑使用 QBuffer 类作为存储数据并在线程之间共享数据的一种方式,但是当我读到 QByteArray(QBuffer 用作数据存储)时。我开始担心 QBuffer 将始终将 '\0' Null 字符附加到线程之间传递的数据的末尾,因为 QByteArray 表现出这种行为?是这种情况还是 QBuffer 允许我存储和检索数据而不对我的所有数据强制执行任何终止 '\0' 字符?
【问题讨论】:
-
QBuffer不是循环缓冲区,即它会随着您添加数据而不断增长,并且在您读取它们时不会删除它们。所以它并不能真正用作线程之间的通信方法。