QHttp::get() is an asynchronous operation, thus all of your myHttp::get calls are executed before the first download even starts. Thus the condition "pendingRequestList->size() == 1" is only satisfied right after you add the first request to the queue. You should queue requests and once a request is finished, check the queue and start another request.