本文介绍了来自 ThreadPool 的 QNetworkAccessManager的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
一个非常基本的问题.该文档提到 QNetworkAccessManager
中的所有方法都是可重入的.如果是这样,在没有锁的 QRunnable
中执行 get()
方法是否合法?我的代码看起来像这样:
A very fundamental question. The documentation mentions that all methods in QNetworkAccessManager
are reentrant. If so, is performing a get()
method in a QRunnable
without locks legal? My code would look something like this:
class MyClass: public QRunnable
{
void run()
{
...
QNetworkAccessManager nam;
QNetworkReply* reply = name.get(request) // No Read-write lock.
...
}
};
推荐答案
来自 Qt 文档:
[...] 如果一个类的成员函数可以[同时]成为可重入从多个线程安全地调用,只要每个线程使用不同的实例班级.
由于您每次都使用不同的实例(您在 run()
中在堆栈中创建的实例),因此您处于安全状态.
Since you're using a different instance each time (the one you create on the stack in run()
), you're on the safe side.
这篇关于来自 ThreadPool 的 QNetworkAccessManager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!