gpt4 book ai didi

qt - QNetworkAccessManager 从不同的线程获取/发布可能吗?

转载 作者:行者123 更新时间:2023-12-04 12:45:52 26 4
gpt4 key购买 nike

我有一个 QNetworkAccessManager对象(如 Qt 文档推荐的那样)。但是,我需要从另一个线程获取请求,即不是创建 QNetworkAccessManager 的线程目的。

这个问题有两个方面:

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

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

    最佳答案

    Is QNetworkAccessManager get/post calls from different threads possible?



    我找到了 QNetworkAccessManager from ThreadPool前段时间在这里讨论过。

    因为 QNetworkAccessManager Class引用说:

    All functions in this class are reentrant.



    以及在 Reentrancy and Thread-Safety 中解释的重入:

    ... a class is said to be reentrant if its member functions can be called safely from multiple threads, as long as each thread uses a different instance of the class. The class is thread-safe if its member functions can be called safely from multiple threads, even if all the threads use the same instance of the class.



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

    关于qt - QNetworkAccessManager 从不同的线程获取/发布可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35684123/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com