/// Класс параллельного потока для чтения лог-файлов
class RThread: public QThread
{
Q_OBJECT
// ...........................
private:
volatile bool stopped; ///< переменная, контролирующая начало и конец выполнения потока
protected:
virtual void run();
public:
void stop() { stopped = true; }
};
void RThread::run()
{
// ..............................
exec();
}
/// Остановка дополнительного потока
void RThread::stop() { stopped = true; }
В главном потоке хочу остановить
/// Загрузка одного файла
bool TLV::loadFile()
{
bool result = false;
if(threadRFile -> isRunning())
{
threadRFile -> stop(); ///< oстановка дополнительного потока
threadRFile -> quit();
delThread();
result = readFile();
visible_tracks = true;
}
else
{
/// any
}
update();
return result;
}
По какой-то причине если вызывать функцию quit() программа валится, говоря что какой-то внутренний, в Qt, мьютекс не разблокирован. Как поправить ошибку?