[SailfishDevel] QThread priority

Andrey Kozhevnikov coderusinbox at gmail.com
Wed May 28 16:07:20 UTC 2014


need to look into your parseReadyData

28.05.2014 22:03, Krisztian Olah ?????:
> Hi Andrey,
>    Thanks for the answer, your snippet looks very similar to what I 
> have. Perhaps if I posted my code segment would be of help in helping 
> me figuring out where I'm wrong.
>    During parsing CPU usage reaches 97-100% which causes my GUI to 
> hang(I have about 500 000 opening and closing tags and half of the 
> enclosed items I need to process: save, in some cases insert spaces, 
> etc), especially awkward when I start parsing whilst still fetching 
> the data from network(sometimes hangs during pageStack.push() ), but 
> it's bad for up to 2-5 seconds nevertheless. I wouldn't mind if 
> parsing took 10 seconds if GUI was responsive. This is what I'm doing:
>
> void SomeClass::someMethod() {
>               MyContainer* container = new MyContainer();
>               //reader has a handle to container, through which it 
> populates the container
>               MyXmlStreamReader* parser = new 
> MyXmlStreamReader(container);
>               QThread* parserThread = new QThread();
> parser->moveToThread(parserThread);
>          connect(parser, SIGNAL(finished()), this, SLOT(onParsingFinished) );
>          connect(parser, SIGNAL(finished()), parserThread, SLOT(quit()) );
>          connect(parser, SIGNAL(finished()), parser, SLOT(deleteLater()) );
>          connect(parserThread, SIGNAL(finished()), parserThread, SLOT(deleteLater()) );
>          parserThread->start();
>          reply = networkMngr->get(QNetworkRequest(someUrl)); //both pointers are class members
>          connect(reply, SIGNAL(finished()), this, SLOT(onAllDataRecieved()) );
>          //this starts the parser with the data available at the time,
>                // when parser reaches the end of xml document it emits itsfinished() signal
>          connect(reply, SIGNAL(readyRead()), this, SLOT(parseReadyData()) );
> }
>
> Thanks again
> Kris
>
>
> On 28 May 2014 06:16, Andrey Kozhevnikov <coderusinbox at gmail.com 
> <mailto:coderusinbox at gmail.com>> wrote:
>
>     it can't "doesn't help much". you initializing thread wrong.
>
>     simple threading way is:
>
>     MyXmlParser *parser = new MyXmlParser(xmlDocument);
>     QThread *thread = new QThread(parser);
>     parser->moveToThread(thread);
>     QObject::connect(thread, SIGNAL(started()), parser, SLOT(parse()));
>     QObject::connect(parser, SIGNAL(parseComplete(QVariantMap)), this,
>     SLOT(onParseComplete(QVariantMap)));
>     thread->start();
>
>     28.05.2014 03:24, Krisztian Olah ?????:
>>           Hi list,
>>       I have a rather large xml file to parse and it causes the UI to
>>     freeze, I assingned the parser to a different thread, but it
>>     doesn't help much. According to the Qt documentation
>>     QThread::setPriority() doesn't work on Linux, is there some kind
>>     of workaround that could be used?
>>
>>     Thanks
>>     Kris
>>
>>
>>     _______________________________________________
>>     SailfishOS.org Devel mailing list
>>     To unsubscribe, please send a mail todevel-unsubscribe at lists.sailfishos.org  <mailto:devel-unsubscribe at lists.sailfishos.org>
>
>
>     _______________________________________________
>     SailfishOS.org Devel mailing list
>     To unsubscribe, please send a mail to
>     devel-unsubscribe at lists.sailfishos.org
>     <mailto:devel-unsubscribe at lists.sailfishos.org>
>
>
>
>
> _______________________________________________
> SailfishOS.org Devel mailing list
> To unsubscribe, please send a mail to devel-unsubscribe at lists.sailfishos.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.sailfishos.org/pipermail/devel/attachments/20140528/cb985fe9/attachment-0001.html>


More information about the Devel mailing list