[Interest] Never ending thread: blocking GUI

Tibold Kandrai dom at dotzteam.com
Tue Oct 16 15:24:37 CEST 2012


Hi,

If you want a QThread to handle something Q related like, events or
Queued SLOTS, you need to start an event loop.
This is what you need: http://qt-project.org/doc/qt-4.8/QEventLoop.html
But I don't know why did it hang your UI because that depends on how did
you call your SLOT.

BTW a few years ago I wrote a very small library that made handling
multiple event loops and moving QObjects between threads. If you are
interested I can go and find it. :)

Cheers,
Tibold

On 2012-10-16 15:15, Sensei wrote:
> Hi! I am in the middle of a crisis, since I thought I understood 
> threads, but I might be wrong!
>
> This is quite easy: I want to start a thread that never ends.
>
> Once in a while, when the GUI needs it, it will "wake the thread up", 
> and run a method of my QThread subclass, in my case, a "find in files" 
> or "rename all files", or any other method.
>
> I thought I could simply make run() be an infinite loop, sleeping for a 
> long period (one day).
>
> I was wrong: I hang my GUI.
>
>
> What are your recommendations? This is what I intended:
>
>
> class ScanFiles : public QThread
> {
> public:
>
>      ScanFiles(QObject *parent = 0) : QThread(parent) { };
>
>      // This should run endlessly, until the parent dies
>      void run()
>      {
>          qWarning("starting scanning thread.");
>
>          // Where does this fit?
>          exec();
>
>          while (1)
>          {
>              qWarning("sleeping now...");
>              // Snore for one day, now 5 secs just for debugging
>              sleep(5);
>          }
>      };
>
> public slots:
>
>      // Here I will place the methods that should be run by the thread
>      QString search(const QStringList &files);
> };
>
>
>
>
> Now, I think my question is quite easy, for someone who understands 
> QThreads... but I'm a complete newbie here :)
>
>
> Thanks & Cheers!
>
>
>
>
>
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest


-- 
Tibold Kandrai
CEO @ Dotz Team




More information about the Interest mailing list