QNetworkAccessManager可以从不同的线程获取/发布?

Hor*_*ter 3 qt qnetworkaccessmanager

我有一个QNetworkAccessManager对象(正如Qt docs推荐的那样).但是,我需要从另一个线程获取请求,即不是线程创建了该QNetworkAccessManager对象.

这个问题有两个方面:

  1. 由于函数(get,post...)没有标记,threadsafe我假设我需要在调用之前使用锁.
  2. 但即使我确保没有2个线程并行调用,也可能出现问题:因此可能会发生QObject父子关系的设置,但是来自不同线程中的对象.为此,我需要知道内部的QNetworkAccessManager

那么允许从另一个线程调用get/post吗?

Ale*_*r V 6

QNetworkAccessManager可以从不同的线程获取/发布呼叫吗?

前段时间我在ThreadPool中找到了QNetworkAccessManager.

并且因为QNetworkAccessManager类引用说:

此类中的所有函数都是可重入的.

并且在Reentrancy和Thread-Safety中解释了重入:

...如果一个类可以从多个线程安全地调用其成员函数,只要每个线程使用该类的不同实例,则称该类是可重入的.如果可以从多个线程安全地调用其成员函数,则该类是线程安全的,即使所有线程都使用该类的相同实例.

因此,这个原始问题的答案是:为了QNetworkAccessManager安全地从不同的线程进行多次调用,每个线程需要一个类实例.