Тогда более подробно о ситуации:
есть устройства, работающие по ком-порту. Необходимо с них считывать информацию, не тормозя основной поток.
Создал наследника от QThread. В нем объект QtSerialPort.
C++ (Qt)
connect(m_port, SIGNAL(readyRead()), this, SLOT(slot_readDataFromPort()));
Слот slot_readDataFromPort() в каком треде будет выполняться?
На счет мютекса: посылаю комманду в ком-порт и ожидаю прихода данных от устройства
C++ (Qt)
QMutex m_waitEndCommand;
QWaitCondition m_isEndCommand;
void CommandThread::run()
{
isWork = true;
// Основной цикл посылки комманд на COM-порт
while(isWork)
{
if(!m_waitEndCommand.tryLock())
return;
m_port->write(m_rigCommands.status.at(i).commandArray);
m_isEndCommand.wait(&m_waitEndCommand, m_timeOut); // Вот тут у меня все время срабатывает по таймауту
m_waitEndCommand.unlock();
}
// Перед окончанием - закрываем COM-порт
m_port->close();
}
слот в треде, который получает данные
C++ (Qt)
void CommandThread::slot_readDataFromPort()
{
m_byteArea += m_port->readAll();
.... тут я полученные данные обрабатываю
m_waitEndCommand.unlock();
}