[Interest] Never ending thread: blocking GUI

Sensei senseiwa at gmail.com
Tue Oct 16 15:15:06 CEST 2012


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!









More information about the Interest mailing list