LinuxForum.Fans
Тема

QThread заморозка отдельного потока

Автор: aviator 3 сообщений 4169 просмотров
#4306

Необходимо сделать итерации цикла с опр. временным интервалом (в миллисекундах)
так же необходима кросплатформенная реализация
выбор пал на Qt... есть по манам там такой интересный класс... QThread
есть обстрактный класс (snature), который является одним из родительских классов
вторым собственно является QThread

text
class qnature: public snature, public QThread{
private:
void mssleep(uint time);
public:
    qnature();
    void run(uint t);
    ~qnature();
};

переопределёная run содержит в себе вызов метода класса snature, где есть вызов виртуальной функции mssleep (которая реализуется в qnature) и содержит вызов метода QThread msleep()

собственно вопрос... почему у меня засыпает основной поток с GUI???

#4310

Как правило, засыпает тот поток в котором вызвана функция sleep. Вы ее наверное в основном вызываете.

#4313

я вызываю функцию run
как я понял при создании экземпляра класса QThread должен создаваться новый поток
а run содержит в себе код, который должен выполняться в отдельном потоке (опять же как я понял)
следовательно все вызовы внутри run должны быть в отдельном и msleep так же должен относиться к отдельному (метод именно QThread, а не стандартный sleep)

зы не использую sleep потому что нужна задержка в миллисекундах

тему можно закрыть)))
функцию нужно было переопределять по прототипу, тоесть void run(), а я переопределил как void run(stm t)
из-за этого run не вызывалась при вызове start....

ps ошибся насчёт создания потока... создаётся при вызове start()

Войдите или зарегистрируйтесь, чтобы ответить.