【问题标题】:sleep function inside QThreadQThread内的睡眠功能
【发布时间】:2012-04-16 02:51:41
【问题描述】:

做了很多研究,但找不到答案。我有一个应用程序,它是通过创建从 QObject 派生的实例构建的,我将这些实例移动到不同的线程。在这些“线程”中,我有一个 QNetworkAccessManager,我在其中请求天蓝色。我现在的问题是我有一些重试逻辑正在快速发生。例如,如果容器不存在,则需要创建它以重试请求(放置 blob)。问题是如果在容器创建后 put blob 请求发生得太快,它将无法上传任何内容。另外,我想增加重发之间的时间,这样它们就不会发生在彼此之后很快。强制线程从自身内部休眠的最佳方法是什么?

【问题讨论】:

    标签: c++ multithreading qt


    【解决方案1】:

    我可能最终会使用 QTimer 和信号/插槽的某种组合。例如:

    // Slot
    void retry() { ... }
    
    ...
    
    // Execute retry code in 1 second:
    QTimer::singleShot( 1000, this, SLOT(retry()) );
    

    【讨论】:

    • 怎么样?在哪里?试图在函数中使用它,但不允许
    • 我认为要使用 QThread::sleep() 你必须从 QThread 派生你的类
    • @chikuba 是的,它必须是一个插槽
    【解决方案2】:

    【讨论】:

    • 然后我可以这样做->thread()->wait(x) 吗?在 objecthirerchy 中移动到单独线程的函数之一内?
    • 如果this->thread() 是您的函数正在运行的线程,我会说是的。试试看吧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 2011-09-10
    • 2011-04-08
    相关资源
    最近更新 更多