我使用for循环将请求发送到http://www.example.com

    for(int i = 0; i < size; ++i)
    {
        request.setUrl("http://www.example.com");

        manager.get(request);
    }


并且我想并行处理回复,因此我运行10个线程,每个线程都有一个插槽功能将回复添加到Qvector<QNetworkReply*>。我将此10插槽功能连接到finished(QNetworkReply*)的信号manager。在这种情况下,当发出finished(QNetworkReply*)时,将调用此10槽函数以将此回复添加到向量10次。我想知道一个线程是否具有该功能,其余9个线程会丢弃该信号以等待另一个信号发出。有没有办法在第一个插槽中吃finished(QNetworkReply*)

最佳答案

http://en.wikipedia.org/wiki/Thread_pool_pattern

我认为您正在寻找的是用于处理请求的线程池。一堆等待做同样事情的工人,一旦有要求处理它。

http://qt-project.org/doc/qt-5/qthreadpool.html#details


  QThreadPool类管理QThread的集合。
  
  QThreadPool
  管理和回收单个QThread对象以帮助减少线程
  使用线程的程序中的创建成本。每个Qt应用程序都有
  一个全局QThreadPool对象,可以通过调用来访问
  globalInstance()
  
  要使用QThreadPool线程之一,请子类QRunnable
  实现run()虚拟功能。然后创建一个对象
  类并将其传递给QThreadPool::start()


https://www.google.com/search?q=qthreadpool+network

http://www.bogotobogo.com/Qt/Qt5_QTcpServer_QThreadPool_Multithreaded_Client_Server.php

希望能有所帮助。

10-08 00:32