crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Остановка потока
AD
  опции профиля:
сообщение 18.8.2009, 16:50
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Есть какой-то код в потоке:
/// Класс параллельного потока для чтения лог-файлов
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, мьютекс не разблокирован. Как поправить ошибку?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.12.2024, 18:05