我正在编写一个从套接字接收数据的 Qt/C++ 程序。我发现我丢失了 readyRead 信号,因为我的插槽花费了太长时间来分析传入的数据。所以现在我把它配对到最低限度:
void test::inputAvailable()
{
while (m_tcpSocket->bytesAvailable())
m_inputBuffer += m_tcpSocket->readAll();
emit(datawaiting());
}
我的问题是:
- 我是否需要使用互斥锁来保护 m_inputBuffer 变量?由于此插槽将附加到它,而我的主程序可能正在从中删除数据。
- 互斥体是否会减慢我的插槽速度,因为我需要它快速。(避免丢失 readyRead 信号)
- 发射(最后一行)是向我的程序发出信号以分析传入数据的正确方法吗?或者这是否会导致我的程序仍在插槽中时重新进入事件循环(导致信号丢失)
我读过这个类似的问题,但没有人给出真正的答案。