QtConcurrent::run Access violation reading location
-
Then are you sure your server is running and that you can make as much connection that you are trying ?
-
Then I would :
- First step: ensure the server is responding
- Second step: try to access the server with one query
- Third step: try with several queries in a row
- Forth step: Try to parallelize your queries
That might include refactoring your code so that for example you'll use QtConcurrent::map to call your function with all the queries from a QList rather than accessing them yourself
-
Then I would refactor the code so that it doesn't use a while loop. Create a QList of queries and either use map or mapped (depending on wether you return a value or not, I think you do return a value)
That would leave the entire parallelization to Qt and you'll only have to worry about retrieving the data.
-
!http://clip2net.com/clip/m0/1373740625-clip-47kb.png(1)!
I launched it from debugger and i see it >_>
So many bugs, its increases on 5-10 every second -
Did you try starting with only one thread ? And then parallelizing with two and only then more ?
-
In that case, you can always use a request known to work for testing that part of your code while debugging the request build part
-
What are the exceptions and warnings ?
-
Did you do a test with a more conventional setup ? I mean have a simple application that creates one QNetworkAccessManager, do one request and get the answer in a slot ?
Seeing that each time you have a RPC server not available warning, that leads me to think that there is something wrong when communicating with the servers.
Like I said before, start small, validate that one query works in a standard setup. Then once that is good, do the same with the "blocking" event loop and then only start multi-threading
-
One other thing came to my mind: Since you are updating some data, why don't you have a class that does the job asynchronously and then emit the result ?
This might make you change the way you store your valid links but it might also end up in a cleaner system.
-
Yes, i test
@#include <QCoreApplication>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkReply>
#include <QTimer>
#include <QEventLoop>
#include <iostream>int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);QNetworkAccessManager manager; QEventLoop loop; QTimer timer; timer.setSingleShot(true); QObject::connect(&manager,SIGNAL(finished(QNetworkReply*)),&loop,SLOT(quit())); QObject::connect(&timer,SIGNAL(timeout()),&loop,SLOT(quit())); QNetworkReply* reply = manager.get(QNetworkRequest(QUrl("http://www.yandex.ru/"))); timer.start(10000); loop.exec(); if(timer.isActive()) { //std::cout << reply->readAll(); } return a.exec();}@
And i get same errors. I will install windows in virlual machine, try to test app and say resultsI have simply application, because i don't create any classes to work with received data
-
What's the difference with your current machine and that virtual machine ?
-
@http://clip2net.com/clip/m0/1373919060-clip-13kb.png@
Warnings if i use msvc compiler