QThread内的睡眠功能
Posted
技术标签:
【中文标题】QThread内的睡眠功能【英文标题】:sleep function inside QThread 【发布时间】:2012-04-16 02:51:41 【问题描述】:做了很多研究,但找不到答案。我有一个应用程序,它是通过创建从 QObject 派生的实例构建的,我将这些实例移动到不同的线程。在这些“线程”中,我有一个 QNetworkAccessManager,我在其中请求天蓝色。我现在的问题是我有一些重试逻辑正在快速发生。例如,如果容器不存在,则需要创建它以重试请求(放置 blob)。问题是如果在容器创建后 put blob 请求发生得太快,它将无法上传任何内容。另外,我想增加重发之间的时间,这样它们就不会发生在彼此之后很快。强制线程从自身内部休眠的最佳方法是什么?
【问题讨论】:
【参考方案1】:我可能最终会使用 QTimer 和信号/插槽的某种组合。例如:
// Slot
void retry() ...
...
// Execute retry code in 1 second:
QTimer::singleShot( 1000, this, SLOT(retry()) );
【讨论】:
怎么样?在哪里?试图在函数中使用它,但不允许 我认为要使用 QThread::sleep() 你必须从 QThread 派生你的类 @chikuba 是的,它必须是一个插槽【参考方案2】:使用QThread::wait()
【讨论】:
然后我可以这样做->thread()->wait(x) 吗?在 objecthirerchy 中移动到单独线程的函数之一内? 如果this->thread()
是您的函数正在运行的线程,我会说是的。试试看吧。以上是关于QThread内的睡眠功能的主要内容,如果未能解决你的问题,请参考以下文章