来自线程池的 QNetworkAccessManager
一个非常基本的问题。文档提到 QNetworkAccessManager 中的所有方法都是可重入的。如果是这样,在没有锁的 QRunnable
中执行 get()
方法是否合法?我的代码看起来像这样:
class MyClass: public QRunnable
{
void run()
{
...
QNetworkAccessManager nam;
QNetworkReply* reply = name.get(request) // No Read-write lock.
...
}
};
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.
...
}
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
来自Qt 文档:
由于您每次都使用不同的实例(您在
run()
中在堆栈上创建的实例),因此您是安全的。From the Qt documentation:
Since you're using a different instance each time (the one you create on the stack in
run()
), you're on the safe side.作为旁注,如果您只想异步获取 GET 请求,QNetworkAccessManager 已经是异步的(文档中是这样说的)。
As a side note to this ,if you just want the GET request to be asynchronous,
QNetworkAccessManager
is already asynchronous (says so in the docs).