Возникает проблема при работе приложения. Debug пишет:
ASSERT: "!isEmpty()" in file /usr/include/qt4/QtCore/qlist.h, line 282
нагуглил: эта строка значит что я использую элемент qlist'а, в то врема, как qlist пуст.
код выгледит примерно так
void TestThread::run()
{
ips.clear();
ports.clear();
for(;;)
{
ok = ports.isEmpty(); // или ips,isEmpty() или и то и другое, ошибка остаётся
while (!ok && ok1)
{
// qDebug() << ips.isEmpty() << ports.isEmpty(); почемуто при пустых листах ports и ips всё равно false
QTcpSocket* socket;
socket = new QTcpSocket();
socket->connectToHost(ips.dequeue(),ports.dequeue());
if(socket->waitForConnected())
emit isgood(ips.dequeue(),ports.dequeue());
//else
// qDebug()<<"bad"<<ips.first() << this;
delete socket;
}
}
}
Масивы ips и ports пополняются в функции этого класса, в ней же устанавливается ok1 = true; ключевое слово volatile при обьявлении ok и ok1 эфекта не даёт, и судя по всему в моём коде просто некоректно работает функция isEmpty()
знаю что подход к потокам извращенский, пробывал QtConcurrent::run, QThreadPool, в слотах QThread писал проверку, результат - последующий сокет ждёт 30 сек чека предидущего, даже если они чекаются в разных потоках. так вроде работает в несколько потоков.
ps не пинайте по лицу, самоучка, недавно подружился с qt
спасибо