如何睡在QRunnable?

时间:2013-06-04 02:02:35

标签: c++ qt

似乎QRunnable没有sleep方法 如何在QThread::sleep

中调用QRunnable之类的方法

2 个答案:

答案 0 :(得分:9)

  1. 请勿使用平台特定功能。 Qt的巨大优势在于它非常便于携带。不要仅使用sleep

  2. 破坏它
  3. 您可以在 Qt 5 中使用QThread::sleepQRunnable中的QtConcurent,因为它在那里被公开:

  4.   

    void QThread :: sleep(unsigned long secs) [静态保护] // Qt 4.8

         

    void QThread :: sleep(unsigned long secs) [静态] // Qt 5.0

    您可以使用互斥锁作为早期Qt版本的解决方法:

    QMutex m(QMutex::NonRecursive);
    m.lock();
    m.tryLock(timeout);
    

    Mutex将无法以递归方式锁定并等待超时。

答案 1 :(得分:3)

只需使用::sleep()它不在Qt中就是POSIX.1-2001函数。

此外,您可以尝试使用此代码,因为QThread::sleep()会调用::Sleep()

class mythreadhelper : public QThread
{
   public:
   static void mysleep(int ms)
   {
      return sleep(ms);
   }
};

此问题已在Qt Centre得到了诺基亚认证Qt开发者的回复。