我有一个QNetworkAccessManager
对象(正如Qt docs推荐的那样)。但是,我需要从另一个线程获取请求,即不是线程创建了QNetworkAccessManager
对象。
这个问题有两个方面:
get
,post
...)未标记为threadsafe
,我认为在调用之前我需要使用锁。QObject
父子关系设置,但是来自不同线程中的对象。为此,我需要知道QNetworkAccessManager
那么允许从另一个线程调用get / post吗?
答案 0 :(得分:5)
QNetworkAccessManager是否接收/发布来自不同线程的调用 可能的?
我不久前在这里讨论过QNetworkAccessManager from ThreadPool。
因为QNetworkAccessManager Class引用说:
此课程中的所有功能都是可重入的。
再次出现在Reentrancy and Thread-Safety中解释:
......如果一个类的成员函数可以是一个类,则说它是可重入的 从多个线程安全地调用,只要每个线程使用一个 不同的类实例。如果它的类是线程安全的 即使有多个线程,也可以安全地调用成员函数 所有线程都使用该类的相同实例。
因此,这个原始问题的答案是:对于来自不同线程的多个调用,QNetworkAccessManager
是安全的,每个线程需要一个类实例。